如何将小数点后两位的字符串转换为双精度浮点数?

26
我想将这个字符串转换为双精度浮点数: 0.55000000000000004 转换成这个: 0.55。如何做到呢?
3个回答

52

您可以使用以下代码来减少精度:

double m = Math.Round(0.55000000000000004,2);

结果将是:0.55


32

是字符串还是双精度浮点数?
如果是字符串:

double d = double.Parse(s,CultureInfo.InvariantCulture);
string s=string.Format("{0:0.00}",d);

如果已经是double类型,只需使用第二行进行格式化。


如果您的十进制分隔符始终为“。”,则应使用CultureInfo.InvariantCulture格式提供程序,您需要知道什么? - Felice Pollano
1
如果您想不带尾随零进行操作,可以使用{0:#,0.######} - sashoalm

12

并不存在双精度浮点数0.55 - 这个数字无法被二进制小数准确地表示。这可能就是你首次得到那个长字符串的原因。你应该使用decimal类型而不是double类型。

阅读《浮点数指南》(The Floating-Point Guide)以了解原因。


5
不行。你需要理解你想要的为什么是不可能的并且没有意义。 - Michael Borgwardt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接