[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Деление целого числа на сто
Владимир55
Читая мануал по РНР, я понял, что при вычислениях могут возникать ошибки, происходящие вследствие невозможности выражения некоторых десятичных чисел в двоичной форме. И что для решения этой проблемы используют округление.

В этой связи возникает вопрос: есть ли смысл использовать округлении при делении произвольного целого числа на сто, чтобы был точный результат и чтобы после запятой гарантированной не появлялись лишние знаки?

$x = (int) $x;
$x = $x / 100;
$x = round($x, 2);
Игорь_Vasinsky
запятой? в php дробная часть отделена точкой.

округение на то и окгугление - чтоб округлять. в php для этого floor, ceil, round

Цитата
и чтобы после запятой гарантированной не появлялись лишние знаки

не понял. о чём это?

Вот возьмите для примера число Пи - 3,14 -а на сам деле там в дробной части - уйма цифр.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
waldicom
Цитата (Владимир55 @ 24.02.2013 - 08:15)
вследствие невозможности выражения некоторых десятичных чисел в двоичной форме

Предложение лишено смысла... простите...

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Владимир55
Нет, не лишено смысла. Например, в двоичной форме не выражается число 1.4.
waldicom
Цитата (Владимир55 @ 24.02.2013 - 14:15)
Нет, не лишено смысла. Например, в двоичной форме не выражается число 1.4.

хм... а как же делает это компьютер, который работает только с двоичными кодами?

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Владимир55
Цитата (waldicom @ 24.02.2013 - 13:44)
Цитата (Владимир55 @ 24.02.2013 - 14:15)
Нет, не лишено смысла. Например, в двоичной форме не выражается число 1.4.

хм... а как же делает это компьютер, который работает только с двоичными кодами?

А так и работает:
echo 94.8 - 95.7;
// дает -0.90000000000001

$L = 10387.8 - 10387;
print ($L);
// дает 0.799999999999

Не секрет, что нет (и не может быть) системы счисления, в которой можно записать любые числа. Например, число «одна целая и две третьих» невозможно записать не только в двоичной системе, с которой работает компьютер, но в и десятичной. А в троичной или в девятиричной вполне возможно. Но в этих системах невозможно записать число «одна вторая».
Hello
Цитата (Владимир55 @ 24.02.2013 - 10:15)
В этой связи возникает вопрос: есть ли смысл использовать округлении при делении произвольного целого числа на сто, чтобы был точный результат и чтобы после запятой гарантированной не появлялись лишние знаки?

Если необходима точность (к примеру работа с деньгами) - конечно стоит. Как всегда всё описано в документации http://php.net/manual/ru/language.types.float.php
Еще вариант - отказаться от float, к примеру хранить денежные значения в копейках, а не в рублях.
Цитата (waldicom @ 24.02.2013 - 15:51)
Предложение лишено смысла... простите...

really?
var_dump(floor((0.1+0.7)*10) === floor((0.1+0.6)*10)); // true


_____________
VPS от 5$, первые 2 месяца - бесплатно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.