我正在使用下面的代码来获得我在两个装饰场所创建的方法的答案。但当我这样做并且complile我得到一个错误说标识符期望。出现2个错误,一个指向2,另一个指向前一个。我的问题是什么?
import java.text.NumberFormat;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
答案 0 :(得分:0)
您所展示的内容是正确的,假设这些行不是全部(import
语句必须在任何类之外)。例如,这是有效的:
import java.text.NumberFormat;
class MyClass {
void someMethod() {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
// ...
}
}
...但是问题中显示的那些排在一起的不是。
如果不是这样,你说错误似乎集中在2
上。有时当我们在SO上看到这样的问题时,这是因为某些零宽度或类似空格的特殊字符意外地在源中结束。因此,如果您删除该行并重新键入它,则可能会消除违规字符。 (实际上,经常出现的情况令人惊讶。)
答案 1 :(得分:-1)
您可以按如下方式编写通用函数:
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