如何以 2 精度转换为双精度 - 点后的字符串?

Posted

技术标签:

【中文标题】如何以 2 精度转换为双精度 - 点后的字符串?【英文标题】:How to convert to double with 2 precision - string after dot? 【发布时间】:2011-02-14 20:49:30 【问题描述】:

我想将此字符串:0.55000000000000004 转换为此双精度:0.55。 该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用此代码来降低精度部分:

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

结果为:0.55

【讨论】:

【参考方案2】:

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

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

如果它已经是双精度格式,则使用第二行。

【讨论】:

如果您的小数点分隔符始终为“.”,则可以使用 CultureInfo.InvariantCulture 格式提供程序,您需要知道什么? 如果你想在没有尾随零的情况下这样做,你可以使用0:#,0.######【参考方案3】:

没有双 0.55 - 这个数字不能准确地表示为二进制分数。这可能就是为什么你首先得到那个长字符串的原因。您可能应该使用decimal 类型而不是double

阅读The Floating-Point Guide 了解原因。

【讨论】:

@PokemonCraft:不。你需要理解为什么你想要的东西是不可能的,没有意义。

以上是关于如何以 2 精度转换为双精度 - 点后的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为双精度后的问题

将双精度转换为双精度,带一位小数和一位小数?

如何使用 stringstream 在 C++ 中将字符串转换为双精度值 [关闭]

如何在特定关键字之后将字符串转换为双精度?

如何在 C++ 中将字符串转换为双精度值?

将字符串从组合框转换为双精度