echo ceil(round(0.28*100,2));
работает как надо.
16. movEAX - 20 Февраля, 2011 - 09:38:22 - перейти к сообщению
17. Джур - 20 Февраля, 2011 - 11:35:27 - перейти к сообщению
Ну, как бы да.
Сначала умножается, получаешь 28, затем округляется до 2-х знаков после точки... 28->28, затем округляешь по точке в плюс, опять таки 28->28.
Сначала умножается, получаешь 28, затем округляется до 2-х знаков после точки... 28->28, затем округляешь по точке в плюс, опять таки 28->28.
18. movEAX - 20 Февраля, 2011 - 11:52:48 - перейти к сообщению
Джур пишет:
Сначала умножается, получаешь 28, затем округляется до 2-х знаков после точки... 28->28, затем округляешь по точке в плюс, опять таки 28->28.
Сначала умножается, получаешь 28, затем округляется до 2-х знаков после точки... 28->28, затем округляешь по точке в плюс, опять таки 28->28.
Дело в том, что по какой-то причине в дробной части 0.28 после сотых имеются другие числа. 2ка была взята произвольно.
И будьте любезны, читайте топик не по принципу стека.
19. JustUserR - 21 Февраля, 2011 - 17:40:22 - перейти к сообщению
movEAX пишет:
Использование предполагаемой конструкции не позволяет осуществить рассмотрение оригинального вопроса связанноо с фунционирование алгоритмов числнного округления при использовании информационных полей типа с плавающей точкой - поскольку при обеспечении генерации внутреннего формата хранения числа с отсутствующей или фиксированной точкой осуществляется выбор фиксированного округления в меньшую сторону в случае недостатка ассоциированных разрядов - в то время как использование чисел в плавающей точной предполагает осуществление поиска ближайшего приближения элемента для которого возможно существование как положительной так и отрицательной величины погрешности
echo ceil(round(0.28*100,2));
работает как надо.
работает как надо.
20. dessor - 21 Февраля, 2011 - 22:31:21 - перейти к сообщению
movEAX пишет:
echo ceil(round(0.28*100,2));
работает как надо.
работает как надо.
Увы, как надо не работает
![Улыбка Улыбка](./im/emoticons/smile24.gif)
![Улыбка Улыбка](./im/emoticons/smile24.gif)
Собственно, я вообще забил на ceil и использваол для решения этой проблемы регулярные выражения. Как говорится, грубо, но эффективно
![Улыбка Улыбка](./im/emoticons/smile24.gif)
Код счас не приведу, не дома, но в любом раскладе, это не сложное рег.выражение)
(Добавление)
Хотя, конечно, можно и ограничиться разумным числом, скажем в 4-5 знаков. В таком раскладе, представленное решение подойдет. Спасибо!
21. JustUserR - 23 Февраля, 2011 - 19:33:36 - перейти к сообщению
dessor пишет:
Использование информационных полей для хранения чисел с плавающей точкой одиночной и двойной точности, предполагает осуществления с данными элементами исключительно фиксированного набора операций, позволяющих обеспечить предшествующую коррекцию возможной возникающей положительной или отрицательной погрешности смещения; в качестве возможного явного варианта решения предполагаемой задачи, возможно осуществление расчета ассоциированного целого числа для рассматриваемого аргумента, с условием проведения вычисления для внедренной дополнительной положительной и отрацательной погрешности, и выбором корректного результата проведенной операцииУвы, как надо не работает потому как нужно жесткое округление в большую сторону даже если ввели 0.280000001, должно получится 29...
В частности необходимо осуществить расчет значений целых ассоциированных элементов для $val+EPS и $val-EPS соответственно по следующей схеме, обеспечивающей нахождение непосредственного расположенного целевого числа для элементов, которые превышают его не более чем на EPS-значение; в идеальном варианте в качестве целевого значения смещения осуществляется выбор такого параметра, обеспечивающего максимальное положительное смещение для целого числа с формата хранения элемента с плавающей точкой