Số thực, số thập phân trong C#

Chào mọi người trong Diễn đàn ạ.
Em muốn hỏi là khi em sử dụng kiểu dữ liệu double, float, hoặc decimal có một số vấn đề khó hiểu.
Khi em muốn nhập vào một số kiểu float.
float x = float.Parse(Console.Readline());
Console.Writeline(x);
Em nhập vào số là 0.003 thì kết quả in ra màn hình lại là 3.

Em cũng không so sánh được hai số kiểu double, float hay decimal.

Mong mọi người giải thích giúp em với ạ.
Em cảm ơn ạ.

Mình làm thử vẫn bình thường, không có vấn đề gì cả, không biết bên bạn compiler bị gì?


Hàm float.parse thì có hàm tương tự là Convert.ToSingle.
Hàm double.parse thì có hàm tương tự là Convert.ToDouble.
Mình sẽ gọi tổng quát hai hàm này lần lượt là: type.parseConvert.To…
double là kiểu dữ liệu không được null.
type.parse sẽ ép kiểu string thành kiểu type, nó không thể ép giá trị như null sang kiểu type, còn Convert.To... thì làm được, nó sẽ tìm giá trị thích hợp nhất khi ép kiểu, ví dụ null sẽ là 0.0 (đối với kiểu double).
Chúc bạn học tốt! :smiley:

3 Likes

Cảm ơn bạn rất nhiều. Mình dùng bản Visual Studio 2012 ulimate. Mình sẽ thử kiểm tra lại. Hoặc cài compiler khác.
Chúc bạn học tốt :)))

Mình ko hiểu. Nhưng đổi thành nhập vào 0,002 thì lại được. :))) cứ nghĩ do cài đặt của máy. Nhưng viết lại = C++ thì lại nhập vào 0.002 mới được. :)))
Lạ thật :)))

Kiểm tra lại Language and Region trên máy tính. Với mỗi vùng miền thì người ta quy định chức năng dấu (.) và (,) là khác nhau. Nó sẽ ảnh hưởng đến kết quả các hàm chuyển đổi.

3 Likes

Em cảm ơn anh ạ :)))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?