Проблема с преобразованием в int. Проблема ли?

AcMaN

Новичок
Проблема с преобразованием в int. Проблема ли?

Пишу гостевую... открываться которая будет с последней страницы. Для этого предварительно вычислял количество страниц и обнаружил что не все числа правильно преобразуются в int. Решил проверить правильно ли преобразуется. Сделал это так:

PHP:
...
<pre><?}
for ($i=0;$i<=10;$i+=(0.1)) echo $i . "\t" . (int)$i . "\n";
{?></pre>
...
И получил следующее:
Ноль преобразовался в ноль, 1->0, 2->2, 3->3, 4->4, 5->4, 6->5, 7->6, 8->7, 9->8, 10->9.
Попробовал на другой машине. Переставил ПХП (4.4.0 -> 5.1.2). Тоже самое. Поменял обратно. Опять ничего. С более опытными ПХП программистами говорил - не знают. Так вот в чем же здесь дело?

По сути дела 1.0 должно преобразоваться в 1, а 10.0 в 10, но почему-то это не происходит. Почему? Баг или не баг?

Апач - 2.0.53, ПХП - 4.4.0, Винда XP Prof SP2.
 

SiMM

Новичок
[telepat mode]
0.1 в десятичной системе счисления с точки зрения двоичной системы счисления - бесконечная двоичная дробь.
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=374
[/telepat mode]
PS: в следующий раз постарайся изъяснять свои мысли чётко и ясно.
> С более опытными ПХП программистами говорил - не знают.
Какие-то они не программисты...
 

AcMaN

Новичок
Теперь понятно в чем проблема - в прокладке.
Спасибо за ответы.

-~{}~ 02.05.06 16:10:

PHP:
for ($i=0;$i<=10;$i+=(0.1)) echo $i . " F(" . floor($i) . ")\n";
Ребята... а получить желаемый результат с помощью того же floor я не смог. Он ни чем не отличается от моего результата описанного выше. Хотелось бы что бы 1 округлялся/приводился бы до/к 1 и 7 до/к 7 и т.д. Как быть?
 

AcMaN

Новичок
)) Эх математика. Пасибо всем за ответы... а ceil не подойдет - ведь он тоже самое делает что и floor только в другую сторону, считай всё равно что ceil($i)=floor($i)+1 , если я ни чего не напутал.
Проблема решилась. Пасиб.

Тему можно закрывать.
 
Сверху