|
Тема
|
Проблем с голямо число в променлива
|
|
Автор |
5koto (непознат
) |
Публикувано | 08.02.07 13:37 |
|
$var1=1111111111111111;
$var2=1111111111111120;
$qty=(($var2-$var1)+1);
while($qty) {
echo str_pad($var1, 18, 0, str_pad_left);
$var1++;
$qty--;
}
резултат:
001111111111111111
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
1.1111111111111E+15
ако $var1 i $var2 са 11111111111 и съответно 11111111120 резултата е:
000000011111111111
000000011111111112
000000011111111113
000000011111111114
000000011111111115
000000011111111116
000000011111111117
000000011111111118
000000011111111119
000000011111111120
Как да избегна проблема с Е+15 и да получа цялото число?
/с round() не става/
| |
Тема
|
Re: Проблем с голямо число в променлива
[re: 5koto]
|
|
Автор |
edembg (Ученик) |
Публикувано | 08.02.07 14:36 |
|
Опитай това
echo str_pad(sprintf("%d", $var1), 18, 0, str_pad_left);
И най-ярките личности си плащат тока.
| |
Тема
|
Re: Проблем с голямо число в променлива
[re: edembg]
|
|
Автор |
5koto (непознат
) |
Публикувано | 08.02.07 14:52 |
|
Не помогна. Изплю това:
000000002147483647
0000000-2147483648
000000000000000000
000000000000000001
000000000000000002
000000000000000003
000000000000000004
000000000000000005
000000000000000006
000000000000000007
| |
Тема
|
Re: Проблем с голямо число в променлива
[re: 5koto]
|
|
Автор |
ro6avia (усер френдли) |
Публикувано | 08.02.07 19:39 |
|
Както пише на сайта на РНР
http://bg2.php.net/integer
Целочислените числа са до 2147483647, а твоето определено прескача ;-)
И както пише тук : http://bg2.php.net/manual/en/language.types.string.php#language.types.string.casting
An integer or a floating point number (float) is converted to a string representing the number with its digits (including the exponent part for floating point numbers
Така че .... решението е в BCMath (http://bg2.php.net/bc)
$var1="1111111111111111";
$var2="1111111111111120";
$qty=$var2-$var1+1;
while($qty) {
echo str_pad($var1, 18, 0, str_pad_left)."
";
$var1 = bcadd($var1,1);
$qty--;
}
Резултата е :
001111111111111111
001111111111111112
001111111111111113
001111111111111114
001111111111111115
001111111111111116
001111111111111117
001111111111111118
001111111111111119
001111111111111120
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroyРедактирано от ro6avia на 08.02.07 19:40.
| |
Тема
|
Благодарско
[re: ro6avia]
|
|
Автор |
5koto (непознат
) |
Публикувано | 09.02.07 11:36 |
|
Свърши работа и беше полезно.
Голям да порастнеш
| |
Тема
|
Re: Благодарско
[re: 5koto]
|
|
Автор |
ro6avia (усер френдли) |
Публикувано | 09.02.07 11:49 |
|
Ако порастна още малко ще надмина Прист Лодърдейл ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
| |
Тема
|
Re: Благодарско
[re: ro6avia]
|
|
Автор |
5koto (непознат
) |
Публикувано | 10.02.07 10:36 |
|
Не е задължително да е във физиологичен аспект. Може и в емоциаонален или финансов
Редактирано от 5koto на 10.02.07 10:36.
| |
|
|
|
|