小数点后第一个有效数字的位置

Grz*_*Dev 1 java decimal

如何计算分数中第一个有效数字的位置?

以下是一些具有所需输出的示例输入

0.123456    // 1st sign. number position = 1
0.0012345   // ...                       = 3
0.000012345 // ...                       = 5
Run Code Online (Sandbox Code Playgroud)

aio*_*obe 6

无需循环.您只需使用以下公式:

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)

关于一些角落案例的说明:

  • 0没有第一个有效数字.对于这种情况,公式评估为Integer.MAX_VALUE.
  • 您尚未指定负值会发生什么,但如果您希望它们的行为类似于正值,则可以使用Math.abs(d)而不是d在公式中使用.