我正在尝试编写一个算法来查找使用.Net字符串格式化程序显示至少一个有效数字的精度数字的最小数目。寻找最低精度
例如。
Value Precision wanted:
----- -----------------
10 0
1 0
0.1 1
0.99 1
0.01 2
0.009 3
(不关心更多的数字,只有第一个,因此0.99只需要1精度)
我能想出的最好的是:
int precision = (int)Math.Abs(Math.Min(0, Math.Floor(Math.Log10(value))));
这工作正常,但我不禁想到有一个更优雅的解决方案。任何数学大师能帮助我吗?
“更简单”的解决方案可能会利用IEEE浮点表示法。 –
NB 0.99四舍五入到一个有效数字不是0.9,它是1 - 我不确定你是否介意这一点。 – Rawling
@Rawling指出,但我实际上没有显示值谢谢。 – GazTheDestroyer