2011-09-12 18 views
11

Parasal değerleri saklıyorum ve FLOAT'un iç yuvarlama problemleri olduğunu okudum (her ne kadar bir problem olduğunu fark edemiyorum) DECIMAL kullanmak daha iyidir.MySQL - DECIMAL (2, 2) içindeki 1 değeri 0.99 olarak çıkıyor.

Yani DECIMAL kullanıyordum ama değeri 1 olarak ayarlamaya çalıştığımda 0.99 olarak saklanır. Bu değeri JavaScript kullanarak bir noktada kullanacağım ve JS hesaplamalarımın yanlış olacağını biliyorum çünkü 0.99 değil 1.00.

Neden böyle yapıyor ve sadece FLOAT kullanmalı mıyım?

cevap

18

Bir şeyler görünümüyle DECIMAL(4, 2) gerekir. DECIMAL(2, 2) sadece sizin için herhangi bir tamsayı parçasına izin vermek üzere bir sütunu tanımlamamış olmanız için -0.99 to 0.99

The precision represents the number of significant digits that are stored for values, and the scale represents the number of digits that can be stored following the decimal point. bir dizi sağlar.

+0

Ah, teşekkürler. Ben sakladığım sayıların türünü değiştirdikten sonra boyutu arttırmayı unuttum. Bazen başka gözlere ihtiyacın var! – BadHorsie

+0

İlgilenmiyorum, olumsuz tarafta hangi aralığa DECIMAL (9, 2) verecek? – BadHorsie

+2

'-9999999.99 ila 9999999.99' arası –

İlgili konular