Skip to content

Commit 4dc4302

Browse files
author
Yasuo Ohgaki
committed
Fixed Bug 64760 var_export() does not use full precision for floating-point numbers
1 parent 69808d6 commit 4dc4302

File tree

5 files changed

+36
-36
lines changed

5 files changed

+36
-36
lines changed

ext/standard/tests/general_functions/var_export-locale.phpt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -784,15 +784,15 @@ string(20) "array (
784784
Iteration 13
785785
array (
786786
0 => 10.5,
787-
1 => 5.6,
787+
1 => 5.5999999999999996,
788788
)
789789
array (
790790
0 => 10.5,
791-
1 => 5.6,
791+
1 => 5.5999999999999996,
792792
)
793-
string(34) "array (
793+
string(49) "array (
794794
0 => 10.5,
795-
1 => 5.6,
795+
1 => 5.5999999999999996,
796796
)"
797797

798798

ext/standard/tests/general_functions/var_export_basic3.phpt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ string(1) "0"
9696

9797

9898
-- Iteration: -0.1 --
99-
-0.1
100-
-0.1
101-
string(4) "-0.1"
99+
-0.10000000000000001
100+
-0.10000000000000001
101+
string(20) "-0.10000000000000001"
102102

103103

104104
-- Iteration: 10.0000000000000000005 --
@@ -120,9 +120,9 @@ string(6) "100000"
120120

121121

122122
-- Iteration: 1e-5 --
123-
1.0E-5
124-
1.0E-5
125-
string(6) "1.0E-5"
123+
1.0000000000000001E-5
124+
1.0000000000000001E-5
125+
string(21) "1.0000000000000001E-5"
126126

127127

128128
-- Iteration: 1e+5 --
@@ -144,9 +144,9 @@ string(6) "100000"
144144

145145

146146
-- Iteration: 1E-5 --
147-
1.0E-5
148-
1.0E-5
149-
string(6) "1.0E-5"
147+
1.0000000000000001E-5
148+
1.0000000000000001E-5
149+
string(21) "1.0000000000000001E-5"
150150

151151

152152
-- Iteration: .5e+7 --
@@ -156,20 +156,20 @@ string(7) "5000000"
156156

157157

158158
-- Iteration: .6e-19 --
159-
6.0E-20
160-
6.0E-20
161-
string(7) "6.0E-20"
159+
6.0000000000000006E-20
160+
6.0000000000000006E-20
161+
string(22) "6.0000000000000006E-20"
162162

163163

164164
-- Iteration: .05E+44 --
165-
5.0E+42
166-
5.0E+42
167-
string(7) "5.0E+42"
165+
5.0000000000000001E+42
166+
5.0000000000000001E+42
167+
string(22) "5.0000000000000001E+42"
168168

169169

170170
-- Iteration: .0034E-30 --
171-
3.4E-33
172-
3.4E-33
173-
string(7) "3.4E-33"
171+
3.4000000000000001E-33
172+
3.4000000000000001E-33
173+
string(22) "3.4000000000000001E-33"
174174

175175
===DONE===

ext/standard/tests/general_functions/var_export_basic5.phpt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,15 +233,15 @@ string(20) "array (
233233
--Iteration: array(10.5, 5.6) --
234234
array (
235235
0 => 10.5,
236-
1 => 5.6,
236+
1 => 5.5999999999999996,
237237
)
238238
array (
239239
0 => 10.5,
240-
1 => 5.6,
240+
1 => 5.5999999999999996,
241241
)
242-
string(34) "array (
242+
string(49) "array (
243243
0 => 10.5,
244-
1 => 5.6,
244+
1 => 5.5999999999999996,
245245
)"
246246

247247

@@ -274,4 +274,4 @@ string(41) "array (
274274
1 => 'test',
275275
)"
276276

277-
===DONE===
277+
===DONE===

ext/standard/var.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ PHPAPI void php_var_export_ex(zval **struc, int level, smart_str *buf TSRMLS_DC)
436436
smart_str_append_long(buf, Z_LVAL_PP(struc));
437437
break;
438438
case IS_DOUBLE:
439-
tmp_len = spprintf(&tmp_str, 0,"%.*H", (int) EG(precision), Z_DVAL_PP(struc));
439+
tmp_len = spprintf(&tmp_str, 0,"%.*H", PG(serialize_precision), Z_DVAL_PP(struc));
440440
smart_str_appendl(buf, tmp_str, tmp_len);
441441
efree(tmp_str);
442442
break;

tests/lang/bug24640.phpt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@ test(1.7e-1000);
3636
===DONE===
3737
<?php exit(0); ?>
3838
--EXPECTF--
39-
1.7E+300
39+
1.7000000000000001E+300
4040
float(1.7E+300)
4141
1.7E+300
4242
1.7E+300
4343
------
44-
1.7E-300
44+
1.7000000000000001E-300
4545
float(1.7E-300)
4646
1.7E-300
4747
1.7E-300
4848
------
49-
1.7E+79
49+
1.7000000000000002E+79
5050
float(1.7E+79)
5151
1.7E+79
5252
1.7E+79
5353
------
54-
1.7E-79
54+
1.6999999999999999E-79
5555
float(1.7E-79)
5656
1.7E-79
5757
1.7E-79
@@ -71,7 +71,7 @@ float(1.7E+81)
7171
1.7E+81
7272
1.7E+81
7373
------
74-
1.7E-81
74+
1.6999999999999999E-81
7575
float(1.7E-81)
7676
1.7E-81
7777
1.7E-81
@@ -81,7 +81,7 @@ float(I%s)
8181
I%s
8282
I%s
8383
------
84-
1.69998107421E-319
84+
1.6999810742105611E-319
8585
float(1.69998107421E-319)
8686
1.69998107421E-319
8787
1.69998107421E-319
@@ -91,7 +91,7 @@ float(I%s)
9191
I%s
9292
I%s
9393
------
94-
1.70007988734E-320
94+
1.7000798873397294E-320
9595
float(1.70007988734E-320)
9696
1.70007988734E-320
9797
1.70007988734E-320
@@ -101,7 +101,7 @@ float(I%s)
101101
I%s
102102
I%s
103103
------
104-
1.69958582169E-321
104+
1.6995858216938881E-321
105105
float(1.69958582169E-321)
106106
1.69958582169E-321
107107
1.69958582169E-321

0 commit comments

Comments
 (0)