我使用下面的代碼來獲得我創建到兩個裝飾位置的方法的答案。但是當我這樣做和complile我得到一個錯誤,說標識符預期。 2錯誤出現在一個指向2和另一個之前。我的問題是什麼?獲得方法的答案到小數點後兩位小數位
import java.text.NumberFormat;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
我使用下面的代碼來獲得我創建到兩個裝飾位置的方法的答案。但是當我這樣做和complile我得到一個錯誤,說標識符預期。 2錯誤出現在一個指向2和另一個之前。我的問題是什麼?獲得方法的答案到小數點後兩位小數位
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
。有時當我們在這裏看到像這樣的問題時,這是因爲某些零寬度或類似空間的特殊字符偶然會在源代碼中結束。因此,如果您刪除該行並重新輸入該行,則可能會清除違規字符。 (它實際上是令人驚訝多久,來了。)
我試過這個 – user2140783 2013-03-15 16:58:38
@ user2140783:不知道還有什麼要告訴你的。如果我複製上面的代碼並將其粘貼到一個'MyClass.java'文件中,它就可以很好地編譯。所以你必須有潛在的東西潛藏在你沒有看到的東西中(或無意中沒有向我們展示)。 – 2013-03-15 17:00:20
如下您可以編寫一個通用功能:
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
這不是OP詢問的問題的答案,這就是完美有效的代碼無法編譯的原因。 (這個問題並不十分清楚。) – 2013-03-15 17:08:54
它也行不通。對.01和.99之間的所有值測試結果%0.01,你會得到一個令人討厭的震動。在90%以上的情況下,它是非零的,並且隨着您提高精度而變得更糟。 – EJP 2013-03-16 00:05:07
此代碼是否在方法內?這個方法在類中嗎? – 2013-03-15 16:49:05
你已經顯示的是正確的,假設這些行不在一起('import'語句必須在任何類之外)。 – 2013-03-15 16:49:25
@HunterMcMillen我在方法之外聲明它,但在裏面使用它。在我的代碼中沒有主要東西。這可能是問題嗎? – user2140783 2013-03-15 16:50:45