4 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
round(200.3456, 2); // returns 200.35
原始版本;注意這個(gè)
public static double round(double value, int places) { if (places < 0) throw new IllegalArgumentException(); long factor = (long) Math.pow(10, places); value = value * factor; long tmp = Math.round(value); return (double) tmp / factor;}
round(1000.0d, 17)
round(90080070060.1d, 9)
所以,用這個(gè)代替
public static double round(double value, int places) { if (places < 0) throw new IllegalArgumentException(); BigDecimal bd = new BigDecimal(value); bd = bd.setScale(places, RoundingMode.HALF_UP); return bd.doubleValue();}
HALF_UP
new BigDecimal(value).setScale(places, RoundingMode.HALF_UP).doubleValue()
在任何情況下
float
double
999199.1231231235 == 999199.1231231236 // true1.03 - 0.41 // 0.6200000000000001
System.out.println(new BigDecimal(1.03).subtract(new BigDecimal(0.41)));System.out.println(new BigDecimal("1.03").subtract(new BigDecimal("0.41")));
項(xiàng)目48:“避免 float
和 double
如果需要確切的答案“ 有效Java
(第二版)
round(200, 0)
200.0

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
double
double value = 200.3456;System.out.printf("Value: %.2f", value);
String
String.format()
String result = String.format("%.2f", value);
DecimalFormat
:
DecimalFormat df = new DecimalFormat("####0.00");System.out.println("Value: " + df.format(value));

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
double val = ....;val = val*100;val = Math.round(val);val = val /100;
double val = ....;val = val*100;val = (double)((int) val);val = val /100;
添加回答
舉報(bào)