|
251 | 251 | * 4 valueOf |
252 | 252 | * n? {number|undefined} Caller's argument. |
253 | 253 | * k? {number|undefined} |
| 254 | + * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) |
254 | 255 | */ |
255 | | - function stringify(x, id, n, k) { |
| 256 | + function stringify(x, id, n, k, rm) { |
256 | 257 | var e, s, |
257 | 258 | Big = x.constructor, |
258 | 259 | z = !x.c[0]; |
|
268 | 269 | n = k - x.e; |
269 | 270 |
|
270 | 271 | // Round? |
271 | | - if (x.c.length > ++k) round(x, n, Big.RM); |
| 272 | + if (x.c.length > ++k) round(x, n, rm || Big.RM); |
272 | 273 |
|
273 | 274 | // toFixed: recalculate k as x.e may have changed if value rounded up. |
274 | 275 | if (id == 2) k = x.e + n + 1; |
|
865 | 866 | * places and rounded using Big.RM. |
866 | 867 | * |
867 | 868 | * dp? {number} Integer, 0 to MAX_DP inclusive. |
| 869 | + * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) |
868 | 870 | */ |
869 | | - P.toExponential = function (dp) { |
870 | | - return stringify(this, 1, dp, dp); |
| 871 | + P.toExponential = function (dp, rm) { |
| 872 | + return stringify(this, 1, dp, dp, rm); |
871 | 873 | }; |
872 | 874 |
|
873 | 875 |
|
|
876 | 878 | * places and rounded using Big.RM. |
877 | 879 | * |
878 | 880 | * dp? {number} Integer, 0 to MAX_DP inclusive. |
879 | | - * |
| 881 | + * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) |
| 882 | + * |
880 | 883 | * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. |
881 | 884 | * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. |
882 | 885 | */ |
883 | | - P.toFixed = function (dp) { |
884 | | - return stringify(this, 2, dp, this.e + dp); |
| 886 | + P.toFixed = function (dp, rm) { |
| 887 | + return stringify(this, 2, dp, this.e + dp, rm); |
885 | 888 | }; |
886 | 889 |
|
887 | 890 |
|
|
891 | 894 | * the integer part of the value in normal notation. |
892 | 895 | * |
893 | 896 | * sd {number} Integer, 1 to MAX_DP inclusive. |
| 897 | + * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) |
894 | 898 | */ |
895 | | - P.toPrecision = function (sd) { |
896 | | - return stringify(this, 3, sd, sd - 1); |
| 899 | + P.toPrecision = function (sd, rm) { |
| 900 | + return stringify(this, 3, sd, sd - 1, rm); |
897 | 901 | }; |
898 | 902 |
|
899 | 903 |
|
|
0 commit comments