Originariamente inviato da filippo.toso
A me funzionano perfettamente ...

Codice PHP:
<?php 
$a 
'0.715';
for (
$i 0$i 1000$i++) {
    echo(
bcadd($i$a2) . '
'
);
}
?>
Ehm.. no, non è che funziona, anzi.. così tronca il 3° decimale, non fà l'arrotondamento...

A me serve che faccia l'arrotondamento (e tutto il problema nasce forse da qui)

Cioè X.715 deve diventare X.72, sempre e comunque.
Invece number_format() mi esegue l'arrotondamento in eccesso (come sia giusto che sia, visto che l'ultima cifra è 5) per numeri < 256, in difetto per numeri > 256.

Poi facendo dei test torna a essere in eccesso sopra il 326 mi pare, e così via..

Guarda l'output del tuo codice usando number_format (ho messo scale=3 perchè non voglio il troncamento ma l'arrotondamento):

Codice PHP:
<?php
$a 
0.715;
for (
$i 0$i 1000$i++) {
    
$k bcadd($i$a2);
    echo 
number_format($k2) . '
'
;
}
?>
Se noti, da 256 a 326 restituisce X.71, invece per tutti gli altri numeri X.72

Ho anche provato a farlo ciclare fino a 10000, il 'problema' sembra essere solo nella fascia 256-326.

Se invece di 0.715 utilizziamo 0.716, il problema non si pone, arrotonda sempre in eccesso...

A questo punto, mi sembra di aver capito che il punto della questione è number_format(), e non la somma o il float (nell'esempio da te postato, togliento bcadd e mettendo la somma normale +, l'output è lo stesso)