[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тысячные числа
Игорь
Помогите исправить приходящие числа на десятичные

например $sumpay равняется скажем 0,1982 или 100,1982 немогу понять
как мне написать чтоб например если продолжить$sumpay_a получалась 0,19 и как второе 100,19

я не очень силен даже вообще не силен в php но мне очень пригодилось ваше решение етой проблемы



Спустя 47 минут, 8 секунд (13.07.2009 - 08:10) qpayct написал(а):
PHP
round($sumpayколличество_знаков_после_запятой);

Спустя 58 минут, 57 секунд (13.07.2009 - 09:09) twin написал(а):
Судя по описанию задачи, тут все же нужно floor()

Спустя 1 час, 54 минуты, 25 секунд (13.07.2009 - 11:03) Игорь написал(а):
Всем спасибо за направление немного поиска в инете и проблему решил вот полное описание как делать

первоначальное $earn составляет скажем 0.1982
после этой функции

<?php function rti($earn){
$string = (string)($earn * 100);
$string_array = split("\.", $string);
$int = (int)$string_array[0];
$return = $int / 100;
return $return;}
?>

здесь на выходе получается 0.19

<?php echo(rti($earn));?>

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

Спустя 5 минут, 50 секунд (13.07.2009 - 11:09) sergeiss написал(а):
А зачем нужен был весь этот изврат с написанием собственной функции, ежели показали в явном виде, какими ГОТОВЫМИ функциями можно пользоваться?

Ежели округление нужно только для вывода, то можно еще третий вариант предложить:
PHP
printf'%.2f'$earn);

Спустя 13 минут, 22 секунды (13.07.2009 - 11:22) Игорь написал(а):
Незнаю может у когото етот способ и работает мож я чтото не так пишу

printf( '%.2f', $earn); но етот код у меня не работает

вообще можно поподробнее заместо f должнобыть написано floor ??

ето тогда получается print floor ('%.2floor',$earn); или как ето должно выглядеть у меня неработает не так как ты написал printf( '%.2f', $earn); и не так print floor ('%.2floor',$earn); что я нетак делаю ????

Спустя 21 минута, 34 секунды (13.07.2009 - 11:44) sergeiss написал(а):
Правильный вариант - что я написал.

PHP
$earn=19.349820547809357;
printf'%.2f'$earn);

В браузере увидим число 19.35

Покажи целиком код, где ты это делаешь. Может быть, у тебя просто где-то ошибка, или такая логика, что на вывод числа не попадашь?

И еще вопрос: у тебя в получаемых величинах стоит запятая или точка? Если запятая, то надо на точку заменить сначала.

Спустя 43 минуты, 28 секунд (13.07.2009 - 12:28) twin написал(а):
Вообще то если я правильно поня, ни printf(), ни sprintf(), ни round() тут не подойдут, так как они округляют число по математическим правилам. А тут нужно округлить до меньшего.
Но и городить такой огород с конвертацией типов данных тоже не к чиму.
Есть же floor() и работает с числами. как положено.

Вот для любого количества знаков после запятой
PHP
function format_num($num,$format = 0)
{
$f = 1;
for(
$i = 0; $i < $format; ++$i)
$f *= 10;
$n = floor($num);
$d = $num - $n;
return $n + floor($d * $f) / $f;
}
    
$num 
= 100.1982;    
echo format_num
($num,2);

Спустя 3 минуты, 3 секунды (13.07.2009 - 12:31) Игорь написал(а):
так твой вариан ето с округление в плюс чего ненучно делать при падсчетах больших сумм утот плюс быдет очень как не выгодный если у тебя скажем интернет магазин оптовой торговли ты не точто чтото заработаеш ты с таким подсчетом еще должен будеш где ты видел чтоб магазины округляли в плюс твой код неправильный

Спустя 15 минут, 44 секунды (13.07.2009 - 12:46) twin написал(а):
Это ты мне?

Спустя 4 минуты, 8 секунд (13.07.2009 - 12:50) sergeiss написал(а):
Подождите... Так надо просто обрезать число после определенного количества знаков после запятой, без округления?

Не проще ли тогда просто обрезать нужное количество знаков?
PHP
function format_num($num,$format = 1)
{
  return substr( $num, 0, strpos( $num, '.')+$format+);
}


PS. Игорь - так ты задачу почётче озвучь smile.gif То ли округлить, то ли обрезать, то ли бабки не потерять...

Спустя 16 минут, 25 секунд (13.07.2009 - 13:07) twin написал(а):
А все таки без преобразований типов лучше. Быстрее работает)))
Быстрый ответ:

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