2013-05-10 2 views
1

Привет, я не могу понять, как постепенно добавлять очень небольшое число?PHP Issue Добавление 0.001 to 0.001?

$val = 0.000000001; 
$add = 0.000000001; 
for ($i=0; $i < 100; $i++) { 
    $val = bcadd($val, $add, 9); 
    echo $val.'<br>'; 
} 

// echo 
// 0.000000000 
// 0.000000000 
// . . . 

Может кто-нибудь помочь?

+0

Речь идет о представлении и точности чисел. Я дам вам ссылку на объяснение плавающих чисел, которые вы должны прочитать в этой статье. Http://www.codeproject.com/Articles/29637/Five-Tips-for-Floating-Point-Programming – Robert

+3

bcadd() ожидает строковые представления числовые значения, а не плавающие –

+1

изменить $ val и $ add на строки, например поставьте их в кавычки. то он будет работать. – Gordon

ответ

1
<?php 
$val = "0.000000001"; 
$add = "0.000000001"; 
for ($i=0; $i < 100; $i++) { 
    $val = bcadd($val, $add, 9); 
    echo $val.'<br>'; 
} 
exit; 

?> 

это работает :), поскольку некоторые коллеги объяснили, что bacadd нужны аргументы, чтобы быть строкой.