2011-09-12 4 views
11

저는 화폐 값을 저장하고 있습니다. FLOAT에 내부 반올림 문제가 있습니다. (내가 어떤 문제를 발견했다고 말할 수는 없지만) DECIMAL을 사용하는 것이 더 좋습니다.MySQL - DECIMAL (2, 2) 중 1의 값이 0.99로 나오고 있습니다.

저는 DECIMAL을 사용했지만 값을 1로 설정하려고 시도하면 0.99로 저장됩니다. 나는 JavaScript에서 그 값을 언젠가는 사용할 것이고, 1.00이 아니기 때문에 내 JS 계산이 잘못 될 것이라는 것을 안다.

왜 그런가요? 그냥 FLOAT를 사용해야합니까?

답변

18

너는 DECIMAL(4, 2)이 필요합니다. DECIMAL(2, 2)-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.의 범위 만 허용하므로 정수 부분을 허용하도록 열을 정의하지 않았습니다.

+0

아, 고마워. 저장하고있는 번호의 유형을 변경 한 후 크기를 늘리는 것을 잊어 버렸습니다. 때로는 또 다른 눈 세트가 필요합니다! – BadHorsie

+0

관심이 없으면 DECIMAL (9, 2)이 내게주는 부정적인 측면은 무엇입니까? – BadHorsie

+2

'-9999999.99 to 9999999.99' –