float
sütununda varsayılan hassasiyetle (53) kayıtlı 1555.4899999999998
değerine sahibim. Basit bir select
yaptığımda, SSMS çıktıyı tüm kullanılabilir hassasiyetle yazdırmak yerine yuvarlar. Yazılan değerin gerçek kaydedilmiş değere eşleşmesi için float
literal olarak çalışmadığından son zamanlarda benim için bazı tuhaflıklara neden oldu.SQL Server Management Studio'da kayan nokta türlerinin tam duyarlık çıktısı
Örneğin, (bu sayılar, her iki varsayılan float
kesin bir dağılıma sahip olduğunu not)
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)
Çıkışlar:
Query Analyzer1555.49 1555.49
1555.490000000000000 1555.489999999999800
, ilk select
çıkışlar:
1555.49 1555.4899999999998
İstediğim davranış budur Management Studio'dan alın. SSMS'nin sonuç ekranında yuvarlanmasını önlemek için bir yol var mı?
veritabanı şeması dışında benim kontrolüm olduğunu ne yazık ki. Ben bu uygulama için float'ın kötü bir seçim olduğu konusunda% 100'lük bir anlaşma yapıyorum, ancak eğer doğru tipte olsaydı, Management Studio'da daha doğru bir temsil olmasını beklerdim. – Simon