【发布时间】:2012-03-05 17:05:07
【问题描述】:
我正在使用 .Net 3.5 在 C# 中编程,试图控制浮点数作为字符串输出的格式。
但是,我看到了一些意想不到的行为。 如果我的代码包含(例如):
浮点值 = 50.8836975;
编辑抱歉,(已删除)代码“示例”没有帮助。基本上,当我在“值”(一个 C# 浮点数)被分配计算结果之后设置断点时,我的问题是试图解释下面的调试语句的结果。 Jon Skeet 的回答正是我所需要的(他的第一行带我去处理无用的代码)。
然后,当我在 立即 窗口中尝试各种选项时,我会看到以下结果:
?value
50.8836975
?value.ToString("G9")
"50.8836975"
?value.ToString("F9")
"50.883700000"
谁能解释为什么我的 F9 格式的值似乎丢失了 3 位精度?
【问题讨论】:
-
50.8836975.ToString("F9")->50.883697500对我来说(注意该值是double,而不是float)。 -
您的代码一开始就无法编译 - 您已经给出了
double文字并试图将其分配给float变量。是哪个? -
好的,我会坦白的。我的代码实际上并不包含该行值 = 50.8836975。然而,当我到达断点时,那是我的调试器中显示的那个浮点(是的,真的!)变量的值。所以我不得不把那个推迟到 Visual Studio。
标签: c# .net numbers format tostring