|
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