mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Fixed bug #43053 (Regression: some numbers shown in scientific notation). (int-e at gmx dot de)
some 64bit test files may need to be fixed
This commit is contained in:
parent
70d96bd685
commit
f9f69a5373
14
Zend/tests/bug43053.phpt
Normal file
14
Zend/tests/bug43053.phpt
Normal file
@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
Bug #43053 (Regression: some numbers shown in scientific notation)
|
||||
--FILE--
|
||||
<?php
|
||||
echo 1200000.00."\n";
|
||||
echo 1300000.00."\n";
|
||||
echo 1400000.00."\n";
|
||||
echo 1500000.00."\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
1200000
|
||||
1300000
|
||||
1400000
|
||||
1500000
|
@ -22,7 +22,7 @@ foreach ($doubles as $d) {
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
float(4083360297110%d)
|
||||
float(4.0833602971%dE+14)
|
||||
float(4.7223664828%dE+21)
|
||||
float(1.3521606402%dE+31)
|
||||
float(1.9807040628%dE+27)
|
||||
|
@ -15,5 +15,5 @@ echo "Done\n";
|
||||
float(-100)
|
||||
float(808792757210)
|
||||
float(-4.5646456464565E+27)
|
||||
float(-11276204760067000)
|
||||
float(-1.1276204760067E+16)
|
||||
Done
|
||||
|
@ -1732,14 +1732,7 @@ ZEND_API char * zend_dtoa(double _d, int mode, int ndigits, int *decpt, int *sig
|
||||
if (value(d) > 0.5 + value(eps))
|
||||
goto bump_up;
|
||||
else if (value(d) < 0.5 - value(eps)) {
|
||||
/* cut ALL traling zeros only if the number of chars is greater than precision
|
||||
* otherwise cut only extra zeros
|
||||
*/
|
||||
if (k < ndigits) {
|
||||
while(*--s == '0' && (s - s0) > k);
|
||||
} else {
|
||||
while(*--s == '0');
|
||||
}
|
||||
while(*--s == '0');
|
||||
s++;
|
||||
goto ret1;
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ array(14) {
|
||||
[11]=>
|
||||
float(123456789012)
|
||||
[12]=>
|
||||
float(1234567890120)
|
||||
float(1.23456789012E+12)
|
||||
[13]=>
|
||||
float(1.23456789012E+19)
|
||||
}
|
||||
|
@ -645,10 +645,10 @@ Array
|
||||
-123456
|
||||
123456
|
||||
-123456
|
||||
120000
|
||||
-120000
|
||||
+120000
|
||||
-120000
|
||||
1.2e+5
|
||||
-1.2e+5
|
||||
+1.2e+5
|
||||
-1.2e+5
|
||||
123456
|
||||
-123456
|
||||
1.0E+5
|
||||
@ -657,10 +657,10 @@ Array
|
||||
-123456
|
||||
123456
|
||||
-123456
|
||||
120000
|
||||
-120000
|
||||
+120000
|
||||
-120000
|
||||
1.2E+5
|
||||
-1.2E+5
|
||||
+1.2E+5
|
||||
-1.2E+5
|
||||
|
||||
*** Output for '%%%.2f' as the format parameter ***
|
||||
%12345678900.00
|
||||
|
@ -152,9 +152,7 @@ PHPAPI char *php_gcvt(double value, int ndigit, char dec_point, char exponent, c
|
||||
*dst++ = '-';
|
||||
}
|
||||
|
||||
for (i = 0; i < ndigit && digits[i] != '\0'; i++);
|
||||
|
||||
if ((decpt >= 0 && decpt - i > 4) || (decpt < 0 && decpt < -3)) { /* use E-style */
|
||||
if ((decpt >= 0 && decpt > ndigit) || decpt < -3) { /* use E-style */
|
||||
/* exponential format (e.g. 1.2345e+13) */
|
||||
if (--decpt < 0) {
|
||||
sign = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user