为什么我有不同的结果转换文本加倍

时间:2017-12-08 10:43:34

标签: c# type-conversion

我这里有代码,会将 String 值转换为 Double ,并带有2位小数。
myStrValue 820 时,最终结果为 8.2 - which is wrong result 应该 8.20

  

我的代码在这里:

string myStrValue = "820";

double myDblValue = Convert.ToDouble(myStrValue) * 0.01; 
double finalValue = Math.Round(myDblValue, 2);

如何纠正?

1 个答案:

答案 0 :(得分:2)

  

最终结果是8.2 - 这是错误的结果它应该是8.20

请不要混淆手边的数字,并在显示时将其表示为字符串。数学上8.2和8.20是相同的数字,并以相同的方式对待。

另一方面,当您决定显示字符串表示时,您将控制字符串表示。

您可以通过不同方式确定显示格式:

finalValue.ToString("0.00");
string rep = $"{finalValue:0.00}";
// and many more, google will find it
  

所以没有机会把它变成8.20?在double数据类型?

实际上没有,因为在数据类型double中它保存完全不同,带有指数和尾数。如果您有兴趣,请查看this page

但如果您想使用该数字,它的表示将无效。 因为finalValue + 0.001会产生8.201