【发布时间】:2015-09-16 06:11:15
【问题描述】:
我目前正在使用代码格式化双精度:
myDouble.ToString("g4");
获取前 4 位小数。但是,我发现如果数字非常大或非常小,这通常会切换到科学记数法。在 C# 中是否有一个简单的格式字符串,只有前四位小数,或者如果它太小而无法在该位数中表示,则为零?
例如,我想:
1000 => 1000
0.1234567 => 0.1235
123456 => 123456 (Note: Not scientific notation)
0.000001234 => 0 (Note: Not scientific notation)
【问题讨论】:
-
您的示例没有显示获得前 4 个有效数字 - 这将给出 0.000001234 作为最终结果,而 123500 作为前一个结果。另请注意,格式字符串会四舍五入,因此当以 4 位有效数字表示 0.1234567 时,您最终会得到 0.1235。此外,您的标题指的是十进制,但您的文本指的是双精度 - 是什么?
-
@JonSkeet - 谢谢,很好。我实际上正在以这种方式格式化双精度和浮点数。需要四舍五入 - 这是我的疏忽,我没有在示例中包含它。
-
您的问题和接受的答案不匹配。您想要“4 位有效数字”还是最多 4 位小数?接受的答案是后者。
-
@kjbartel - 我已经编辑了问题文本。
标签: c#