mysql возвращает не точное значение в функции max при работе с плавающей точкой? - PullRequest
2 голосов
/ 27 октября 2010

Посмотрите на этот запрос, пожалуйста

SELECT max( val_amd ) FROM `best_deposits` 

У меня максимальное значение в таблице равно 14,6 (поля имеют тип float),

Но возвращается 14.3599996566772

почему это происходит и как я могу получить точное значение?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

поплавки - это зло!

НИКОГДА использовать поплавки для хранения сумм или цен.вместо этого используйте int и сохраняйте сумму в центах.это только способ обойти эти проблемы навсегда.

почему это происходит: потому что с плавающей точкой не может быть сохранен точно во многих случаях(например, 0,6 в вашем случае)

PS: у нас до сих пор было много вопросов для разных языков:

РЕДАКТИРОВАТЬ: на ваш комментарий: как я уже сказал:

используйте int и сохраните сумму в центах

(альтернативноВы могли бы использовать ДЕСЯТИЧНЫЙ (10,2) (или какой большой / сколько десятичных знаков вам нужно) ... не уверен, как это работает)

1 голос
/ 27 октября 2010

Или для хранения цен лучше использовать "десятичное число" длиной 10,2 или что-то подобное.

...