如何以 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 精度转换为双精度 - 点后的字符串?的主要内容,如果未能解决你的问题,请参考以下文章