我已經查看了一些與格式化數有關的線程。 大多數情況下,它的作品除了價值3.101。 Float和Double已經與##和00格式一起使用。Java - 十進制格式當返回浮點數或十進制數時丟失精度
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args)
{
Float d1 = -3.1011f;
Double ds = -3.1011;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println (Double.valueOf(df.format(d1)));
System.out.println (Double.valueOf(df.format(ds)));
DecimalFormat df2 = new DecimalFormat("#.00");
System.out.println (Double.valueOf(df2.format(d1)));
System.out.println (Double.valueOf(df2.format(ds)));
}
}
輸出是:
-3.1
-3.1
-3.1
-3.1
預期輸出:
-3.10
-3.10
-3.10
-3.10
正如上面提到的,這個工程我已經測試過的所有其他號碼。出於某種原因,這導致了一個問題。
任何想法是什麼讓這個號碼如此不同以及需要額外的步驟來獲得第二位數字?
請記住,關鍵是我想最終返回一個浮點數或雙精度值。
的[?我如何圓一個雙在Java小數點後兩位(可能的複製http://stackoverflow.com/questions/5710394/how-do-i -double-to-two-decimal-places-in-java) – Omore
我不完全清楚你的問題是什麼。 –
刪除'Double.valueOf'位,它會更好地工作。 – assylias