30/09/2018, 21:01

Hàm toString() của Double trong Java

Các bác giúp em với ạ, em bị tình trạng in ra giá trị không mong muốn khi đang làm calculator bằng Java

public class Main2 {
    public static void main(String[] args) {
        double d = 1.2;
        double l = 1.3;
        System.out.println(d-l);
    }
}

Và output nó ra là
-0.10000000000000009 BUILD SUCCESSFUL (total time: 0 seconds)

Giải thích hộ em với ạ

nguyen huy hoang viết 23:08 ngày 30/09/2018

toString của double, hình như bạn bị hiểu sai về java???

nguyen huy hoang viết 23:05 ngày 30/09/2018

vấn đề của bạn có thể giải quyết như thế này float rs= (float)(d-l); System.out.println(rs);

nguyen huy hoang viết 23:14 ngày 30/09/2018

thêm pần giải thích cho bạn. bạn có thể tự tìm trên gg có rất nhiều nhưng đại khái là java không thể lưu chính xác giá trị 0.1 thay vào đó là 0.1000000000000000055511151231257827021181583404541015625

BigCat viết 23:05 ngày 30/09/2018

Có 1 đống cách để làm việc này

d-l =Double.parseDouble(new DecimalFormat("##.##").format(d-l));

hoặc

x= d-l = Math.floor(x * 100) / 100;

hoặc  round , String.format ........ vân vân và mây mây =))

Bài liên quan
0