關於java格式化資料,保留兩位小數不精準的問題
首先,網上有傳的幾種格式化的方法,如下
java保留兩位小數問題:
方式一:
四捨五入
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留兩位小數
---------------------------------------------------------------
方式二:
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你要格式化的數字);
例:new java.text.DecimalFormat("#.00").format(3.1415926)
#.00 表示兩位小數 #.0000四位小數 以此類推...
方式三:
double d = 3.1415926;
String result = String .format("%.2f");
%.2f %. 表示 小數點前任意位數 2 表示兩位小數 格式後的結果為f 表示浮點型
方式四:
NumberFormat ddf1=NumberFormat.getNumberInstance() ;
void setMaximumFractionDigits(int digits)
digits 顯示的數字位數
為格式化物件設定小數點後的顯示的最多位,顯示的最後位是舍入的
float
num=(
float
)(Math.round(totalPrice*
100
)/
100
);
//如果要求精確4位就*10000然後/10000
這樣計算的話,自己可以筆算試試,出來的結果跟你想要的結果誤差是比較大的
解決處理的方法:
把所有的Float資料,換成Double