我想了解这段代码是怎么回事:
float flt = 0.123F;
string s1 = flt.ToString("0.#########"), // "0.123"
s2 = flt.ToString("N9"); // "0.123000003"
其中调试器中
flt
的值为0.123
:
有关“#”自定义数字格式说明符的文档指出:
如果正在格式化的值的位置有一个数字 “#”符号出现在格式字符串中,该数字将被复制到 结果字符串。否则,该位置不会存储任何内容 结果字符串。关于
带有精度说明符的标准数字格式的文档没有解释为什么它在末尾添加 000003
。
000003
添加到只有
0.123
的变量末尾?
here,您会发现值 0.123F
实际上存储为
0.123000003397464752197265625
。浮点是一种以二进制格式存储“近似”值的方法。 .NET 支持单精度和双精度浮点数。 双精度格式占用的存储空间是单精度格式的两倍,但仍然存储近似值。