|
Страница 1 из 1 [ Сообщений: 15 ] |
Автор |
Сообщение |
AlexShop
участник
|
|
|
|
|
|
Iliasaur
новый человек
|
|
AlexShop, из первой ссылки как раз следует, что это самый настоящий баг. Только не баг PHP, а баг представления дробей компьютером вообще. Так что все просто: Цитата: | never trust floating number results to the last digit and never compare floating point numbers for equality |
Цитата из той же первой ссылки. Т.н. простыми операторами (ceil, floor) можно пользоваться если результат не критичен. А вот если писать программу для бухгалтерии и ворочать большими суммами, то... В общем, думайте сами, решайте сами
|
|
|
|
|
Crazy
Модератор
|
|
AlexShop писал(а): | оказывается Код: echo ceil(0.07*100)/100) вернет 0.08 |
Чушь. Оно вернет "parse error, unexpected ')', expecting ',' or ';'"
|
|
|
|
|
Iliasaur
новый человек
|
|
Увы, способ представления нецелых чисел в компе мы выбирать не можем. Зато мы можем выбрать способ, которым будем производить над ними математические операции. И вот если бы у нас было два инструмента: один для операций с целыми числами и один - с нецелыми, то мы воспользовались бы вашим, Crazy, советом: сопоставили бы способы и цели и выбрали бы библиотеку для работы с нецелыми числами. Но в том-то и дело, что оба способа, - и обычные операторы PHP, и специальные библиотеки, - предоставляют средства для работы с нецелыми числами. Оправдывать здесь ошибки якобы неверно выбранным способом - и есть шаманизм, т.к. уж коли стандартные средства PHP за нецелые числа берутся, то мы вправе ожидать от них если не точности, то хотя бы безошибочной работы. Ведь независимо от цели целые числа остаются таковыми всегда и везде. Вы же не станете утверждать что в некоторых случаях ceil((0.07*100)/100) = 0.08 будет верным ответом?
|
|
|
|
|
Crazy
Модератор
|
|
Iliasaur писал(а): | Увы, способ представления нецелых чисел в компе мы выбирать не можем. |
Цитата: | For arbitrary precision mathematics PHP offers the Binary Calculator which supports numbers of any size and precision, represented as strings. |
|
|
|
|
|
Iliasaur
новый человек
|
|
Попробовал в гугле поискать, ничего токового не нашел. А книжку искать лень, т.к из названий arbitrary precision и limited precision уже в общих чертах все понятно. Вот если бы можно было взглянуть на исходники функций BCMath, тогда бы мы поспорили. Они же даже числа числами не представляют: Цитата: | numbers of any size and precision, represented as strings |
. А в остальном просто промолчу, дабы правила форума не нарушать.
|
|
|
|
|
Jamakaser
участник
|
|
Iliasaur писал(а): | Они же даже числа числами не представляют: Цитата: | numbers of any size and precision, represented as strings |
. А в остальном просто промолчу, дабы правила форума не нарушать. |
Ага, полезно помолчать.
_________________ Найди кликабельный пиксель -->
|
|
|
|
|
|
Страница 1 из 1 [ Сообщений: 15 ] |
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
|
|