Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизPHP Найти похожие ветки
← →
QuasiLamo © (2005-06-03 10:39) [0]Неужели бывают языки без встроенной функции определения дробной части числа?
← →
Anatoly Podgoretsky © (2005-06-03 10:50) [1]А почему бы и нет
← →
Gero © (2005-06-03 10:51) [2]Да, бывают.
← →
DVM © (2005-06-03 10:57) [3]X-FLOOR(X)
← →
QuasiLamo © (2005-06-03 10:59) [4]
> DVM © (03.06.05 10:57) [3]
Не катит...
например, для 1.234 дает 0.233999999999
← →
QuasiLamo © (2005-06-03 11:06) [5]
> QuasiLamo © (03.06.05 10:59) [4]
И по модулю надо брать, кстати...
← →
VMcL © (2005-06-03 11:07) [6]>>QuasiLamo © (03.06.05 10:59) [4]
Идём на Королевство. Читаем статью о числах с плавающей точкой. Думаем о прочитанном.
← →
QuasiLamo © (2005-06-03 19:05) [7]
> VMcL © (03.06.05 11:07) [6]
не нашел...
Если не затруднит, дайте, пожалуйста, ссылку.
← →
VMcL © (2005-06-03 19:19) [8]Вроде, эта:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=374&mode=print
← →
QuasiLamo © (2005-06-03 20:19) [9]Большое спасибо за статейку, узнал кое-что новое.
Мне необходимо было проверить число, поступающее в скрипт PHP - в дробной части не более 5 цифр.
Ф-ции выделения дробной части числа в PHP я не нашел, а ухищрения вроде
> DVM © (03.06.05 10:57) [3]
не помогали в силу
> VMcL © (03.06.05 19:19) [8]
Решил проблему такfunction chk_frac($arg)
{
if(floor($arg*100000)<($arg*100000)) return true; else return false;
}
Я понимаю что оно карявенькое, но работает. Если кто может предложить лучший вариант, буду очень благодарен.
← →
palva © (2005-06-03 21:09) [10]Корректно можно решить этот вопрос, обрабатывая строку, поступающую в скрипт не переводя в число. Т.е. выделить цифры после точки, убрать хвостовые нули и подсчитать оставшиеся цифры. Если же вы переведете строку в число, то это двоичное число почти всегда будет представлять строку с некоторой погрешностью. При этом вопрос о том сколько там стояло десятичных цифр после точки становится очень непростым. Что же касается вашего метода, то, наверно, несложно предъявить такое число, с которым функция будет работать неправильно.
← →
QuasiLamo © (2005-06-03 21:38) [11]
> Корректно можно решить этот вопрос, обрабатывая строку,
> поступающую в скрипт не переводя в число. Т.е. выделить
> цифры после точки, убрать хвостовые нули и подсчитать оставшиеся
> цифры.
А если умелец подставит число в формате типа
1+E10?
> Что же касается вашего метода, то, наверно, несложно предъявить
> такое число, с которым функция будет работать неправильно
Имеется ввиду переполнение при умножении? К числу предъявляются помимо сказанного требования, еще одно: не более 20 цифр(пять из них могут быть в дробной части). Сначала проверяется, больше ли там 21 символа(точка).
← →
palva © (2005-06-03 22:02) [12]Вот 18 цифр
if (chk_frac(12345678901.2345601)) echo("None");
else echo("OK");
← →
QuasiLamo © (2005-06-04 00:22) [13]и в правду...
Не понял пока почему так происходит...
Возможно из-за
Размер float зависит от платформы, хотя максимально возможна величина ~1.8e308 с точностью, грубо, 14 десятичных цифр (то есть 64 битный IEEE-формат).
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.082 c