Java Puzzlers笔记--Puzzle 2: Time for a change 关于浮点型的问题

    技术2022-05-11  69

    public class Change{     public static void main(String[] args){        System.out.println(2.00 - 1.10);     } } Solution:     结果显示是:     0.8999999999999999999999999999    由于1.1不能用double来准确表示,而是用了一个接近的数来表示。TID:    not all decimals can be represnted exaclty using binary floating-point;    Binary floating-point is particularly ill-suited to calculations.    Always use the BigDecimal(String) constructor, newver BigDecimal(double).    avoid float and double where exact answers are required; for monetary calculations, use int, long, or BigDecimal.Correctly:import java.math.BigDecimal;public class Change{    public static void main(String[] args){       System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));    }}

    最新回复(0)