precision.phpt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. --TEST--
  2. precision setting test
  3. --INI--
  4. precision=14
  5. serialize_precision=17
  6. --FILE--
  7. <?php
  8. $v = array(123456789.012345678901234567890, 10/3, 987e100, 10.0000001);
  9. echo "INI".PHP_EOL;
  10. ini_set('precision', -1);
  11. ini_set('serialize_precision', -1);
  12. echo ini_get('precision'), PHP_EOL;
  13. echo ini_get('serialize_precision'), PHP_EOL;
  14. echo "OUTPUTS".PHP_EOL;
  15. echo join($v, ' ').PHP_EOL;
  16. var_dump(serialize($v));
  17. var_export($v);echo PHP_EOL;
  18. echo "INI".PHP_EOL;
  19. ini_set('precision', 0);
  20. ini_set('serialize_precision', 0);
  21. echo ini_get('precision'), PHP_EOL;
  22. echo ini_get('serialize_precision'), PHP_EOL;
  23. echo "OUTPUTS".PHP_EOL;
  24. echo join($v, ' ').PHP_EOL;
  25. var_dump(serialize($v));
  26. var_export($v);echo PHP_EOL;
  27. echo "INI".PHP_EOL;
  28. ini_set('precision', 9);
  29. ini_set('serialize_precision', 9);
  30. echo ini_get('precision'), PHP_EOL;
  31. echo ini_get('serialize_precision'), PHP_EOL;
  32. echo "OUTPUTS".PHP_EOL;
  33. echo join($v, ' ').PHP_EOL;
  34. var_dump(serialize($v));
  35. var_export($v);echo PHP_EOL;
  36. echo "INI".PHP_EOL;
  37. ini_set('precision', 14);
  38. ini_set('serialize_precision', 14);
  39. echo ini_get('precision'), PHP_EOL;
  40. echo ini_get('serialize_precision'), PHP_EOL;
  41. echo "OUTPUTS".PHP_EOL;
  42. echo join($v, ' ').PHP_EOL;
  43. var_dump(serialize($v));
  44. var_export($v);echo PHP_EOL;
  45. echo "INI".PHP_EOL;
  46. ini_set('precision', 17);
  47. ini_set('serialize_precision', 17);
  48. echo ini_get('precision'), PHP_EOL;
  49. echo ini_get('serialize_precision'), PHP_EOL;
  50. echo "OUTPUTS".PHP_EOL;
  51. echo join($v, ' ').PHP_EOL;
  52. var_dump(serialize($v));
  53. var_export($v);echo PHP_EOL;
  54. echo "INI".PHP_EOL;
  55. ini_set('precision', 25);
  56. ini_set('serialize_precision', 25);
  57. echo ini_get('precision'), PHP_EOL;
  58. echo ini_get('serialize_precision'), PHP_EOL;
  59. echo "OUTPUTS".PHP_EOL;
  60. echo join($v, ' ').PHP_EOL;
  61. var_dump(serialize($v));
  62. var_export($v);echo PHP_EOL;
  63. echo "INI".PHP_EOL;
  64. ini_set('precision', 100);
  65. ini_set('serialize_precision', 100);
  66. echo ini_get('precision'), PHP_EOL;
  67. echo ini_get('serialize_precision'), PHP_EOL;
  68. echo "OUTPUTS".PHP_EOL;
  69. echo join($v, ' ').PHP_EOL;
  70. var_dump(serialize($v));
  71. var_export($v);echo PHP_EOL;
  72. --EXPECT--
  73. INI
  74. -1
  75. -1
  76. OUTPUTS
  77. 123456789.01234567 3.3333333333333335 9.87E+102 10.0000001
  78. string(89) "a:4:{i:0;d:123456789.01234567;i:1;d:3.3333333333333335;i:2;d:9.87E+102;i:3;d:10.0000001;}"
  79. array (
  80. 0 => 123456789.01234567,
  81. 1 => 3.3333333333333335,
  82. 2 => 9.87E+102,
  83. 3 => 10.0000001,
  84. )
  85. INI
  86. 0
  87. 0
  88. OUTPUTS
  89. 1.0E+8 3 1.0E+103 1.0E+1
  90. string(60) "a:4:{i:0;d:1.0E+8;i:1;d:3.0E+0;i:2;d:1.0E+103;i:3;d:1.0E+1;}"
  91. array (
  92. 0 => 1.0E+8,
  93. 1 => 3.0E+0,
  94. 2 => 1.0E+103,
  95. 3 => 1.0E+1,
  96. )
  97. INI
  98. 9
  99. 9
  100. OUTPUTS
  101. 123456789 3.33333333 9.87E+102 10.0000001
  102. string(72) "a:4:{i:0;d:123456789;i:1;d:3.33333333;i:2;d:9.87E+102;i:3;d:10.0000001;}"
  103. array (
  104. 0 => 123456789.0,
  105. 1 => 3.33333333,
  106. 2 => 9.87E+102,
  107. 3 => 10.0000001,
  108. )
  109. INI
  110. 14
  111. 14
  112. OUTPUTS
  113. 123456789.01235 3.3333333333333 9.87E+102 10.0000001
  114. string(83) "a:4:{i:0;d:123456789.01235;i:1;d:3.3333333333333;i:2;d:9.87E+102;i:3;d:10.0000001;}"
  115. array (
  116. 0 => 123456789.01235,
  117. 1 => 3.3333333333333,
  118. 2 => 9.87E+102,
  119. 3 => 10.0000001,
  120. )
  121. INI
  122. 17
  123. 17
  124. OUTPUTS
  125. 123456789.01234567 3.3333333333333335 9.8700000000000007E+102 10.000000099999999
  126. string(111) "a:4:{i:0;d:123456789.01234567;i:1;d:3.3333333333333335;i:2;d:9.8700000000000007E+102;i:3;d:10.000000099999999;}"
  127. array (
  128. 0 => 123456789.01234567,
  129. 1 => 3.3333333333333335,
  130. 2 => 9.8700000000000007E+102,
  131. 3 => 10.000000099999999,
  132. )
  133. INI
  134. 25
  135. 25
  136. OUTPUTS
  137. 123456789.0123456716537476 3.33333333333333348136307 9.870000000000000687310143E+102 10.0000000999999993922529
  138. string(141) "a:4:{i:0;d:123456789.0123456716537476;i:1;d:3.33333333333333348136307;i:2;d:9.870000000000000687310143E+102;i:3;d:10.0000000999999993922529;}"
  139. array (
  140. 0 => 123456789.0123456716537476,
  141. 1 => 3.33333333333333348136307,
  142. 2 => 9.870000000000000687310143E+102,
  143. 3 => 10.0000000999999993922529,
  144. )
  145. INI
  146. 100
  147. 100
  148. OUTPUTS
  149. 123456789.01234567165374755859375 3.333333333333333481363069950020872056484222412109375 9.87000000000000068731014283095442748328521861543465424509123736073120616987695396574376473706259651E+102 10.0000000999999993922529029077850282192230224609375
  150. string(277) "a:4:{i:0;d:123456789.01234567165374755859375;i:1;d:3.333333333333333481363069950020872056484222412109375;i:2;d:9.87000000000000068731014283095442748328521861543465424509123736073120616987695396574376473706259651E+102;i:3;d:10.0000000999999993922529029077850282192230224609375;}"
  151. array (
  152. 0 => 123456789.01234567165374755859375,
  153. 1 => 3.333333333333333481363069950020872056484222412109375,
  154. 2 => 9.87000000000000068731014283095442748328521861543465424509123736073120616987695396574376473706259651E+102,
  155. 3 => 10.0000000999999993922529029077850282192230224609375,
  156. )