php-src/tests/lang/bug24640.phpt
Nikita Popov a939805641 Use serialize_precision for var_dump()
var_dump() is debugging functionality, so it should print
floating-point numbers accurately. We do this by switching
to serialize_precision, which (by default) will print with
as much precision as necessary to preserve the exact value
of the float.

This also affects debug_zval_dump().

Closes GH-5172.
2020-02-25 09:51:32 +01:00

128 lines
1.6 KiB
PHP

--TEST--
Bug #24640 (var_export and var_dump can't output large float)
--INI--
precision=12
serialize_precision=17
--FILE--
<?php
function test($v)
{
echo var_export($v, true) . "\n";
var_dump($v);
echo "$v\n";
print_r($v);
echo "\n------\n";
}
test(1.7e+300);
test(1.7e-300);
test(1.7e+79);
test(1.7e-79);
test(1.7e+80);
test(1.7e-80);
test(1.7e+81);
test(1.7e-81);
test(1.7e+319);
test(1.7e-319);
test(1.7e+320);
test(1.7e-320);
test(1.7e+321);
test(1.7e-321);
test(1.7e+324);
test(1.7e-324);
test(1.7e+1000);
test(1.7e-1000);
?>
--EXPECTF--
1.7000000000000001E+300
float(1.7000000000000001E+300)
1.7E+300
1.7E+300
------
1.7000000000000001E-300
float(1.7000000000000001E-300)
1.7E-300
1.7E-300
------
1.7000000000000002E+79
float(1.7000000000000002E+79)
1.7E+79
1.7E+79
------
1.6999999999999999E-79
float(1.6999999999999999E-79)
1.7E-79
1.7E-79
------
1.7E+80
float(1.7E+80)
1.7E+80
1.7E+80
------
1.7E-80
float(1.7E-80)
1.7E-80
1.7E-80
------
1.7E+81
float(1.7E+81)
1.7E+81
1.7E+81
------
1.6999999999999999E-81
float(1.6999999999999999E-81)
1.7E-81
1.7E-81
------
I%s
float(I%s)
I%s
I%s
------
1.6999810742105611E-319
float(1.6999810742105611E-319)
1.69998107421E-319
1.69998107421E-319
------
I%s
float(I%s)
I%s
I%s
------
1.7000798873397294E-320
float(1.7000798873397294E-320)
1.70007988734E-320
1.70007988734E-320
------
I%s
float(I%s)
I%s
I%s
------
1.6995858216938881E-321
float(1.6995858216938881E-321)
1.69958582169E-321
1.69958582169E-321
------
I%s
float(I%s)
I%s
I%s
------
0.0
float(0)
0
0
------
I%s
float(I%s)
I%s
I%s
------
0.0
float(0)
0
0
------