autosoft
Guest
Неточности в данных типа float
Если выполнить следующий код
то PHP генерирует вывод
Откуда берется погрешность? Так должно быть?
Если выполнить следующий код
PHP:
for ($i = 0, $j = 1; $i < 50; $i++, $j *= 10) printf("%2d => %f\n", $i, $j);
PHP:
0 => 1.000000
1 => 10.000000
2 => 100.000000
3 => 1000.000000
4 => 10000.000000
5 => 100000.000000
6 => 1000000.000000
7 => 10000000.000000
8 => 100000000.000000
9 => 1000000000.000000
10 => 10000000000.000000
11 => 100000000000.000000
12 => 1000000000000.000000
13 => 10000000000000.000000
14 => 100000000000000.000000
15 => 1000000000000000.000000
16 => 10000000000000000.000000
17 => 100000000000000000.000000
18 => 1000000000000000000.000000
19 => 10000000000000000000.000000
20 => 100000000000000000000.000000
21 => 1000000000000000000000.000000
22 => 10000000000000000000000.000000
23 => 100000000000000000000000.000000
24 => 1000000000000000600000000.000000
25 => 10000000000000006000000000.000000
26 => 100000000000000060000000000.000000
27 => 1000000000000000600000000000.000000
28 => 10000000000000006000000000000.000000
29 => 100000000000000060000000000000.000000
30 => 1000000000000000600000000000000.000000
31 => 10000000000000006000000000000000.000000
32 => 100000000000000060000000000000000.000000
33 => 1000000000000000600000000000000000.000000
34 => 10000000000000006000000000000000000.000000
35 => 100000000000000060000000000000000000.000000
36 => 1000000000000000600000000000000000000.000000
37 => 10000000000000006000000000000000000000.000000
38 => 100000000000000060000000000000000000000.000000
39 => 1000000000000000600000000000000000000000.000000
40 => 10000000000000006000000000000000000000000.000000
41 => 100000000000000150000000000000000000000000.000000
42 => 1000000000000001500000000000000000000000000.000000
43 => 10000000000000015000000000000000000000000000.000000
44 => 100000000000000150000000000000000000000000000.000000
45 => 1000000000000001500000000000000000000000000000.000000
46 => 10000000000000015000000000000000000000000000000.000000
47 => 100000000000000200000000000000000000000000000000.000000
48 => 1000000000000002000000000000000000000000000000000.000000
49 => 10000000000000020000000000000000000000000000000000.000000