округление чисел

Статус
В этой теме нельзя размещать новые ответы.

serega393

Новичок
округление чисел

получаю числа например: 0.00345 и 0.00000345 как сделать чтобы числа имели значения 0.003 и 0.000003
 

antonio

Moderator
Команда форума
http://ru.php.net/manual/en/ref.math.php

Ищущий да обрящет
 

antonio

Moderator
Команда форума
Значит плохо искал. Учись работать с документацией.
 

phprus

Moderator
Команда форума
Могу посоветовать прочитать статью http://ru.wikipedia.org/wiki/Округление В ней есть нужные тебе ключевые слова (на английском), которые помогут найти нужную функцию в списке, ссылку на который дал antonio.
 

Фанат

oncle terrible
Команда форума
может, ему нужно типа динамическое обнуление?
 

Sepuka

Новичок
Я бы может сделал так ... :
PHP:
$d = "0.000002999";
$pos = strpos($d, '.');
while ($d[$pos] == 0) $pos++;
echo number_format($d, $pos - 1);
 

phprus

Moderator
Команда форума
serega393
round ceil floor не делают необходимого действия
А что они по твоему делают и что-же на самом деле нужно тебе?
А может быть ты просто не понимаешь принцип хранения вещественных чисел в памяти компьютера?

Sepuka
Я бы может сделал так ... :
Иногда лучше жевать чем говорить...

Фанат
может, ему нужно типа динамическое обнуление?
А это как? Обнуление это в смысле присваивание значения 0 ?
 

Фанат

oncle terrible
Команда форума
phprus
так предложи идеологически правильный вариант
 

phprus

Moderator
Команда форума
*****
Идеологически правильный вариант - это попытаться понять что-же на самом деле нужно.
Пока я вижу такие варианты:
1) Нужно округление. НО округление имеет смысл тогда и только тогда, когда мы знаем необходимую точность и знаем почему именно такая точность необходима.
2) Человек не понимает как хранятся вещественные числа и по этому удивляется неточности результата. Пути решения - понять как все работает, а дальше как в пункте 1. Либо использовать арифметику с фиксированной точностью. Там таких проблем будет поменьше.
3) Человеку нужно оставить первую цифру которая не 0 после точки. Зачем нужно такое я представить себе не могу.
Но идеологически правильный вариант для такого решения содержал бы как минимум проверку того, что вернул strpos (есть ли вообще десятичная точка или запятая), а так-же проверку на невыход за пределы строки.
 

phprus

Moderator
Команда форума
Фанат
Согласись, что код предложенный Sepuka все-же сильно некорректен и содержит как минимум два названных мною бага.
 

serega393

Новичок
производятся вычисления на выходе выходит число неизвестного кол-ва символов напрмер: 0.000456 надо обрезать до первой цифры после нулей (нужно 0.0004)

-~{}~ 08.02.10 16:32:

phprus
3) Человеку нужно оставить первую цифру которая не 0 после точки. Зачем нужно такое я представить себе не могу.
 

phprus

Moderator
Команда форума
serega393
Скажи пожалуйста, а зачем такое может вообще понадобиться?
 

serega393

Новичок
если не знаете так и напишите чтоб время не терять Sepuka спасибо за вариант но что то не работает
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху