如何计算分数中第一个有效数字的位置?
以下是一些具有所需输出的示例输入
0.123456 // 1st sign. number position = 1
0.0012345 // ... = 3
0.000012345 // ... = 5
Run Code Online (Sandbox Code Playgroud)
无需循环.您只需使用以下公式:
Math.ceil(-Math.log10(d))
Run Code Online (Sandbox Code Playgroud)
例:
public static int firstSignificant(double d) {
return (int) Math.ceil(-Math.log10(d));
}
// Usage
System.out.println(firstSignificant(0.123456)); // 1
System.out.println(firstSignificant(0.0012345)); // 3
System.out.println(firstSignificant(0.000012345)); // 5
Run Code Online (Sandbox Code Playgroud)
关于一些角落案例的说明:
Integer.MAX_VALUE.Math.abs(d)而不是d在公式中使用.