Java 将方法的答案精确到小数点后两位
我正在使用下面的代码来获得我在两个decomal位置创建的方法的答案。但当我这样做和complile,我得到一个错误,说标识符预期。出现2个错误,一个指向2,另一个正好在前面。我有什么问题Java 将方法的答案精确到小数点后两位,java,methods,Java,Methods,我正在使用下面的代码来获得我在两个decomal位置创建的方法的答案。但当我这样做和complile,我得到一个错误,说标识符预期。出现2个错误,一个指向2,另一个正好在前面。我有什么问题 import java.text.NumberFormat; NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); 您所显示的是正确的,假设这些行不在一起(import语句必须在任何
import java.text.NumberFormat;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
您所显示的是正确的,假设这些行不在一起(
import
语句必须在任何类之外)。例如,这是有效的:
import java.text.NumberFormat;
class MyClass {
void someMethod() {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
// ...
}
}
…但你的问题中所显示的这些线并不是
如果不是这样,您说错误似乎集中在
2
上。有时,当我们在这里看到这样的问题时,这是因为一些零宽度或类似空格的特殊字符意外地出现在源代码中。因此,如果您删除该行并重新键入,则可能会删除冒犯的字符。(这种情况出现的频率令人惊讶。)您可以编写一个通用函数,如下所示:
public static double round(double inputNumber, int fractionDigits, int roundingMode) {
BigDecimal bigDecimal = new BigDecimal(inputNumber);
BigDecimal rounded = bigDecimal.setScale(fractionDigits, roundingMode);
return rounded.doubleValue();
}
请查看以下样本测试结果:
import java.math.BigDecimal;
public class RoundHelper {
public static void main(String[] args) {
System.out.println(RoundHelper.round(123.98980, 2, BigDecimal.ROUND_HALF_UP));
System.out.println(RoundHelper.round(123.98000, 2, BigDecimal.ROUND_HALF_UP));
System.out.println(RoundHelper.round(123.98000, 2, BigDecimal.ROUND_HALF_UP));
System.out.println(RoundHelper.round(123.55087, 2, BigDecimal.ROUND_HALF_UP));
System.out.println(RoundHelper.round(123.14000, 2, BigDecimal.ROUND_HALF_UP));
}
public static double round(double inputNumber, int fractionDigits, int roundingMode) {
BigDecimal bigDecimal = new BigDecimal(inputNumber);
BigDecimal rounded = bigDecimal.setScale(fractionDigits, roundingMode);
return rounded.doubleValue();
}
}
输出:
123.99
123.98
123.98
123.55
123.14
此代码是否在方法中?该方法在类内部吗?您所展示的是正确的,假设行不在一起(
import
语句必须在任何类外部)。@HunterMcMillen我在方法外部声明它,但在内部使用它。我的代码中没有main。这可能是问题所在吗?@user2140783:Amain
仅在类中是通过java
命令行工具运行的程序的主类时才需要。缺少main
不会导致预期的标识符
错误。@user2140783:不知道还能告诉你什么。如果我复制上面的内容并将其粘贴到MyClass.java
文件中,它就可以编译了。因此,源代码中一定隐藏着一些你看不到的东西(或者无意中没有向我们展示)。这并不是OP提出的问题的答案,这就是为什么完全有效的代码无法编译。(这个问题并不十分清楚。)它也不起作用。对结果%0.01进行测试,以确定所有介于.01和.99之间的值,您将受到严重的冲击。在超过90%的情况下,它是非零的,并且随着精度的提高,它会变得更糟。