Tôi có giá trị 1555.4899999999998
được lưu trữ trong cột float
với độ chính xác mặc định (53). Khi tôi làm một đơn giản select
, SSMS làm tròn đầu ra thay vì in nó với tất cả độ chính xác có sẵn. Nó gây ra một số gotchas cho tôi gần đây kể từ khi giá trị in không hoạt động như một float
chữ để phù hợp với giá trị thực tế được lưu trữ.Đầu ra chính xác đầy đủ của các loại điểm động trong SQL Server Management Studio
Ví dụ (lưu ý rằng cả những con số này có một đại diện chính xác trong mặc định float
),
declare @f1 float
declare @f2 float
set @f1 = 1555.49
set @f2 = 1555.4899999999998
select @f1, @f2
select STR(@f1,30,15), STR(@f2,30,15)
Đầu ra:
1555.49 1555.49
1555.490000000000000 1555.489999999999800
Trong Query Analyzer, mà select
đầu ra đầu tiên:
1555.49 1555.4899999999998
Đó là hành vi tôi muốn nhận được từ Management Studio. Có cách nào để ngăn chặn SSMS từ làm tròn trong màn hình hiển thị kết quả của nó?
Giản đồ cơ sở dữ liệu nằm ngoài tầm kiểm soát của tôi, không may. Tôi đồng ý 100% rằng 'float' là một lựa chọn không tốt cho ứng dụng này, nhưng nếu đó là kiểu đúng tôi vẫn mong đợi một biểu diễn chính xác hơn trong Management Studio. – Simon