标签: c# types double
为什么
Console.WriteLine((1000000f + 0.10f).ToString("N2"));
打印
1 000 000.00
但没有1 000 000.10?
当我使用“double”类型或输入“float”减去1000000时 - 这个问题就消失了!
答案 0 :(得分:4)
使用小数来防止这些准确性/舍入问题。
Console.WriteLine((1000000m + 0.10m).ToString("N2"));
原因:浮点数的精确度仅为7位数(reference) - 您的数字为8
答案 1 :(得分:1)
根据MSDN,float类型只有7位精度。一个百万有七位数,小数部分是四舍五入的。
Double类型的精度为15-16位,因此milion可以有8-9位长的小数部分。小于一百万的数字小于7位数(不含小数部分)。