Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Decimal(g) / Decimal(h) và Decimal (g/h) khác gì nhau?
23:02 17-08-2021
811 lượt xem
3 bình luận
00:37 18-08-2021
Mọi người chỉ giùm mình sự khác nhau giữa: 'Decimal(g) / Decimal(h) và Decimal (g/h) ?
# g, h là 2 số thực bất kỳ
Sau khi tìm hiểu một chút thì em có thể giải thích theo cách hiểu của em, nếu sai thì mong mọi người chỉnh sửa
Mặc định thì máy sẽ lưu số thực theo kiểu binary floating-point (dấu chấm động nhị phân), do đó sẽ có nhiều số thực thì máy sẽ hiểu không chính xác, mọi người có thể thử 1.1 + 2.2, kết quả không phải là 3.3 mà là 3.000000....3.
Còn đối với Decimal, nó sẽ lưu số thực theo kiểu decimal floating-point (dấu chậm động thập phân), cách lưu này tốt hơn, sẽ biểu diễn được nhiều số thập phân sau dấu phẩy hơn, nhưng cũng sẽ có nhiều số sau khi convert thì cũng không thể biểu diễn chính xác đối với máy.
Đối với câu hỏi ở trên thì có thể hiểu là:
Decimal(g)/Decimal(h): chuyển các số theo kiểu decimal floating-point rồi sau đó mới thực hiện phép chia.
Decimal(g/h): chia theo kiểu binary floating-point trước, rồi sau đó mới ép kết quả theo kiểu decimal floating-point.
p/s: Có một cách biểu diễn số chính xác là chúng ta nên đưa chuỗi vào Decimal hay vì số.
Nếu mình không nhầm thì:
1. Decimal(g) / Decimal(h): sẽ ép kiểu deci số thực trước rồi chia
2. Decimal (g/h): chia 2 số xong mới ép kiểu deci