|
|
|
|
<?
$var = 23.23643;
$var = round($var,2); // 23.24
?>
|
Замечательно. А если мне надо в меньшую сторону?
<?
$var = 23.23643;
....
$var должно быть 23.23
?>
|
и
<?
$var = 23.93643;
....
$var должно быть 23.23
?>
|
| |
|
|
|
|
|
|
|
для: Shorr Kan
(05.01.2006 в 19:18)
| | А скаких радостей 23.93643 округляется в 23.23 | |
|
|
|
|
|
|
|
для: Евгений Петров
(05.01.2006 в 19:37)
| | Ну ошибся я, ошибся.... конечно - 23.93 | |
|
|
|
|
|
|
|
для: Евгений Петров
(05.01.2006 в 19:37)
| | Если это была опечатка и имелось в виду 23.93 т.е. просто отбрасывать числа после 2-го знака, то можно регулярными выражениями вырезать
<?
$val = 2.3456;
preg_match("/^([0-9]+\.[0-9]{2})/",$val,$regs);
echo $regs[1];
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(05.01.2006 в 19:42)
| | Да, оно. Поклон. | |
|
|
|
|
|
|
|
для: Shorr Kan
(05.01.2006 в 19:18)
| | Ну я в этом не спец, но разве не пишеться так $var=round($var,0,2);
или вместо 2 надо 4 в этом случае! Ну это мое мнение, никогда не проверял и не использовал еще функцию round | |
|
|
|
|
|
|
|
для: midav
(05.01.2006 в 19:39)
| | round() не переваривает три входящих параметра. | |
|
|
|
|
|
|
|
для: Shorr Kan
(05.01.2006 в 19:18)
| | В меньшую сторону следует использовать функцию floor(), как в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5032
PS Правда он только до целых чисел работает. Разумнее наверное просто отрезать при помощи строковых функций до нужного знака после запятой. | |
|
|
|
|
|
|
|
для: cheops
(05.01.2006 в 22:41)
| | Строковыми функциями - сейчас не соображу - как. Вот вот вышеназванной регуляркой - вроде получается.
До целых - понятно, но до целых - не подходит. | |
|
|
|
|
|
|
|
для: Shorr Kan
(05.01.2006 в 23:40)
| | - | |
|
|
|
|
|
|
|
для: Shorr Kan
(05.01.2006 в 23:40)
| | Строковыми функциями можно так:
<?
$val = 23.34546;
$to = (($to = strpos($val,".")) == null)?strlen($val):$to;
echo substr($val,0,$to+3);
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(06.01.2006 в 00:31)
| | А только что придумал ещё как можно
<?
$val = 23.3456789;
echo round(($val-0.005),2);
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(06.01.2006 в 00:31)
| | На всякий, чтобы не было проблем с разными локалями:
<?
$val = 23.34546;
$to = (($to = strpos($val,".") || ($to = strpos($val,","))) == null)?strlen($val):$to;
echo substr($val,0,$to+3);
?>
|
| |
|
|
|
|
|
|
|
для: isset
(06.01.2006 в 00:38)
| | Я не думал, что когда-нибудь скажу такое.... но не кажется ли вам, что регулярным тут попроще?...
а вариант
<?
$val = 23.3456789;
echo round(($val-0.005),2);
?>
кажется, округлит, а не обрежет. | |
|
|
|
|
|
|
|
для: Shorr Kan
(06.01.2006 в 01:18)
| | Зато строковыми функциями быстрее получится... хотя, конечно, не вооружённым взглядом это вряд ли можно заметить... | |
|
|
|
|
|
|
|
для: Shorr Kan
(06.01.2006 в 01:18)
| | Мне кажется проще и быстрее мой последний вариант, там где 0.05 вычитается | |
|
|
|
|
|
|
|
для: Евгений Петров
(06.01.2006 в 01:21)
| | вариант
<?
$val = 23.3456789;
echo round(($val-0.005),2);
?>
кажется, округлит, а не обрежет.
И почему -0.005 ? | |
|
|
|
|
|
|
|
для: Shorr Kan
(06.01.2006 в 01:26)
| | Количество нулей после запятой, это количество знаков которое надо обрезать. И он не округлит а именно обрежет. Например нам надо получить число 23.34:
минимальное число 23.3400000
максимальное число 23.3499999
теперь вычитаем:
из первого: 23.34-0.005 = 23.335 округляем = 23.34
из второго: 23.34999-0.005 = 23.34499 округляем = 23.34
таким образом числа как бы обрезаются | |
|
|
|
|
|
|
|
для: Евгений Петров
(06.01.2006 в 01:32)
| | 23.35002-0.005 = 23.34997 округляем = 23.34 ... а должно быть 23.35 | |
|
|
|
|
|
|
|
для: Shorr Kan
(06.01.2006 в 01:35)
| | 23.35002-0.005 = 23.34502 округляем = 23.35
вы скрипт запустите и сами во всем убедитесь | |
|
|
|
|
|
|
|
для: Shorr Kan
(06.01.2006 в 01:35)
| | И кстати если округлить 23.34997 то будет не 23.34 а 23.35 :)))) | |
|
|
|
|
|
|
|
для: Евгений Петров
(06.01.2006 в 01:40)
| | Ничего не понял, ладно - практика мне объяснит. К сожалению, сейчас ничего проверить не могу, но к утру - буду более эрудирован. Спасибо. | |
|
|
|