在項目中經(jīng)常出現(xiàn)double類型的數(shù)據(jù)在顯示時0000000000...1或者999999999999...9等情況出現(xiàn),這種情況有很多解決情況,可以從后端解決也可以從前端解決。
前端解決:
方法一:使用toFixed()函數(shù)
toFixed() 方法可把 Number 四舍五入為指定小數(shù)位數(shù)的數(shù)字。
使用語法為:NumberObject.toFixed(num);其中num是指規(guī)定小數(shù)位數(shù),是 0 ~ 20 之間的值,包括 0 和 20。如果省略了該參數(shù),將用 0 代替。
var num = 557127.1299999999;
num.toFixed(2);
輸出結(jié)果為:557127.13
后端使用java解決:
方法一:使用BigDecimal對象
前面說過詳細的說明,不做詳細說明了,詳解見 http://www.itdecent.cn/p/b2708c1b2c77
// import java.math.BigDecimal;
double num = 557127.1299999999;
num = new BigDecimal(num).setScale(7, BigDecimal.ROUND_HALF_UP).toPlainString();
System.out.println("num:" + "\n" + num);
String str = "557127.1299999999";
str = new BigDecimal(Double.parseDouble(str)).setScale(7, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("str :" + "\n" + str );
方法二:使用DecimalFormat對象
// java.text.DecimalFormat;
double num = 557127.1299999999;
DecimalFormat df = new java.text.DecimalFormat("#.00");
String str = df.format(num);
System.out.println("str :" + "\n" + str );
以上就是一些簡單的處理java中double類型數(shù)據(jù)計算導(dǎo)致精度缺失的解決辦法。