.NET:十进制到舍入字符串
如果我有一个小数
,如何获得具有两位小数的字符串版本?这不起作用:
Math.Round(myDecimal, 2).ToString("{0.00}");
If I have a decimal
, how do I get a string version of it with two decimal places? This isn't working:
Math.Round(myDecimal, 2).ToString("{0.00}");
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不要使用大括号,它们用于使用
string.Format
将格式化值嵌入到较长的字符串中。使用这个:Don't use the curly brackets, they are for embedding a formatted value in a longer string using
string.Format
. Use this:也许我错了,但我尝试过 myDecimal.ToString(); 并成功了。
Maybe i'm wrong, but i've tried
myDecimal.ToString();
and it worked.假设
myDecimal
是System.Decimal
,则Math.Round(myDecimal, 2).ToString();
将显示两位精度的十进制数字,就像你想要的那样,没有任何格式字符串(除非你的数字的绝对值大于 10^27-1)。这是因为decimal
数据类型保留了数字的完整精度。也就是说1m
、1.0m
、1.00m
的存储方式不同,显示也会不同。请注意,
float
或double
并非如此。1f
、1.0f
和1.00f
的存储和显示方式与1d
、1.0 相同d
和1.00d
。由于必须在运行时解析格式字符串,因此在大多数情况下,对于这样的代码,我可能会省略它。
Assuming
myDecimal
is aSystem.Decimal
, thenMath.Round(myDecimal, 2).ToString();
will display two decimal digits of precision, just as you want, without any format string (unless the absolute value of your number is greater than 10^27-1). This is because thedecimal
datatype retains full precision of the number. That is to say that1m
,1.0m
, and1.00m
are all stored differently and will display differently.Note that this is not true of
float
ordouble
.1f
,1.0f
, and1.00f
are stored and display identically, as do1d
,1.0d
, and1.00d
.Since the format string must be parsed at runtime, I would probably omit it for code like this in most cases.