首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# Double - ToString()格式,有两个小数位,但不四舍五入

C# Double - ToString()格式,有两个小数位,但不四舍五入
EN

Stack Overflow用户
提问于 2010-03-16 19:40:21
回答 11查看 461.3K关注 0票数 186

如何在C#中将Double格式化为String,使其只有两个小数位?

如果我使用String.Format("{0:0.00}%", myDoubleValue),然后对数字进行四舍五入,我想要一个简单的截断而不进行任何四舍五入。我还希望到String的转换是文化敏感的。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-03-16 19:44:02

我使用以下代码:

代码语言:javascript
运行
复制
double x = Math.Truncate(myDoubleValue * 100) / 100;

例如:

如果数字是50.947563,并且您使用以下命令,则会发生以下情况:

代码语言:javascript
运行
复制
- Math.Truncate(50.947563 * 100) / 100;
- Math.Truncate(5094.7563) / 100;
- 5094 / 100
- 50.94

这就是你的答案被截断了,现在要格式化字符串,只需执行以下操作:

代码语言:javascript
运行
复制
string s = string.Format("{0:N2}%", x); // No fear of rounding and takes the default number format
票数 232
EN

Stack Overflow用户

发布于 2010-03-16 19:48:01

我建议您先截断,然后格式化:

代码语言:javascript
运行
复制
double a = 123.4567;
double aTruncated = Math.Truncate(a * 100) / 100;
CultureInfo ci = new CultureInfo("de-DE");
string s = string.Format(ci, "{0:0.00}%", aTruncated);

对于2位数截断,使用常量100;在小数点后使用1后跟任意数量的零。使用调整格式结果所需的区域性名称。

票数 36
EN

Stack Overflow用户

发布于 2015-03-04 22:30:51

我使用price.ToString("0.00")来获取前导0

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2453951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档