Tôi cần chuyển đổi Float sang thập phân (28,10) trong SQL Server. Vấn đề của tôi là do bản chất của phao, và cách thức chuyển đổi được thực hiện, chỉ cần đúc phao có thể làm cho nó có vẻ là số sai cho người dùng của tôi.Chuyển đổi Float sang thập phân (SQL Server)
Ví dụ:
Float: 280712929.22
Cast as Decimal: 280712929.2200000300
What I think I want: 280712929.2200000000
Tôi hiểu một chút thông tin về hoạt động của phao chiều (mà nó là một kiểu dữ liệu xấp xỉ vv), nhưng phải thừa nhận là không đủ để hiểu tại sao nó thêm 300 ở cuối. Nó đơn giản là rác thải như là một tác dụng phụ của việc chuyển đổi, hoặc là nó bằng cách nào đó một đại diện chính xác hơn về những gì nổi thực sự lưu trữ? Đối với tôi, có vẻ như nó đã kéo chính xác ra khỏi không khí mỏng.
Cuối cùng, tôi cần nó chính xác, nhưng cũng phải nhìn "đúng". Tôi nghĩ rằng tôi cần phải có được số dưới cùng, như sau đó nó trông giống như tôi đã chỉ cần thêm dấu chân sau. Điều này có thể không? Đây có phải là một ý tưởng tốt hay xấu, và tại sao? Các đề xuất khác được hoan nghênh.
Một số ví dụ khác:
Float: 364322379.5731
Cast as Decimal: 364322379.5730999700
What I want: 364322379.5731000000
Float: 10482308902
Cast as Decimal: 10482308901.9999640000
What I want: 10482308902.0000000000
Side lưu ý: bảng cơ sở dữ liệu mới mà tôi đang đặt những giá trị này vào là có thể đọc được bởi người dùng của tôi. Họ thực sự chỉ cần hai chữ số thập phân ngay bây giờ, nhưng điều đó có thể thay đổi trong tương lai vì vậy chúng tôi đã quyết định đi với Thập phân (28,10). Mục tiêu dài hạn là chuyển đổi các cột nổi mà tôi cũng nhận được dữ liệu của tôi từ thập phân.
CHỈNH SỬA: Đôi khi các số nổi mà tôi có số thập phân nhiều hơn số tôi cần, ví dụ: -0.628475064730907. Trong trường hợp này, dàn diễn viên đến -0,6284750647 là tốt. Tôi về cơ bản cần kết quả của tôi để thêm zeroes vào cuối phao cho đến khi tôi có 10 chữ số thập phân.
Có lẽ tôi tìm thấy câu trả lời. http://stackoverflow.com/questions/34316871/how-can-the-following-result-of-casting-from-float-to-numeric-be-explained –