|
|
|
|
|
для: Eugene77
(16.03.2012 в 16:54)
| | Воспользуйтесь sprintf(), задав явное количество нулей после запятой - вам будет проще. | |
|
|
|
|
|
|
|
для: task
(16.03.2012 в 15:47)
| | >Вы заговорили о представлении,
Меня не общая теория итересует, а чисто прикладная сторона, как именно в РНР происходит преобразование даблов в строку.
Поскольку прямое применение Round не слишком удобно в моём случае.
Возможно, кто-то уже сталкивался с потребностью такой формы округления, как я.
Может, вариант рабочего кода напишет. У меня, лично функция сложная получается.
Боюсь, сразу без ошибок не получится, да и медленно работать будет. | |
|
|
|
|
|
|
|
для: Eugene77
(16.03.2012 в 08:22)
| | Хм... может воспользоваться функцией sprintf()? | |
|
|
|
|
|
|
|
для: Eugene77
(16.03.2012 в 12:46)
| | Вы заговорили о представлении, а машина и так хранит их в памяти более чем разумно, тем не менее возникают ошибки, и связанные не только с округлением. Здесь расскрываются некоторые причины, и какому условию должны отвечать нормализованные числа. | |
|
|
|
|
|
|
|
для: task
(16.03.2012 в 08:52)
| | Прочитал, но не увидел связи с темой | |
|
|
|
|
|
|
|
|
для: cheops
(15.03.2012 в 16:13)
| | >>Это результат округления.
>Почему округления, а не накопления ошибки вычисления? Как раз бы тут пригодилась функция round() с её способностью округлять до заданного знака после запятой.
Да, конечно, накопления ошибки.
Только, round() не совсем удобен в моём случае.
Параметров много, и их часть из них меняются в пределах тысяч, другие в пределах тысячных, поэтому надо разные аргументы раунду передавать.
Меня бы больше устроил такой подход:
1) Double преобразуется в строку с максимальной точностью
2) Последние 2 значащие цифры отбрасываются
3) С правой стороны тримятся нули
4) Обратно в double
Но я подозреваю, что при преобразовании числа в строку, РНР и так делает что-то в этом роде.
Поэтому и спрашиваю | |
|
|
|
|
|
|
|
для: Eugene77
(15.03.2012 в 13:29)
| | >Это результат округления.
Почему округления, а не накопления ошибки вычисления? Как раз бы тут пригодилась функция round() с её способностью округлять до заданного знака после запятой. | |
|
|
|
|
|
|
| Я ищу минимум многомерной плавной функции.
Ставлю точки по определённому алгоритму но так, чтобы они всегда попадали
в узлы заданной мною сетки (между точками в направлении каждого измерения своё равное расстояние).
Но в результате вычислений, когда, например, из координаты узла я вычитаю величину расстояния между точками, а потом её прибавляю я получаю иное число:
Это результат округления.
Когда я сохраняю в БД координаты уже обсчитанных точек, чтобы второй раз не считать, и
придумав новую точку делаю в начале выборку из БД на предмет того, обсчитывалась ли данная точка прежде, то часто получаю ошибочный результат.
Есть разные пути решения этой проблемы.
Но в данной теме, я хотел спросить:
Кто знает способ нормализации double в РНР?
|
| |
|
|
|
|