Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
In javascript, Number.prototype.toFixed has problems rounding.
Here’s the fix and some test cases.
Number.prototype.toFixed = (function () { var oldToFixed = Number.prototype.toFixed; return function (precision) { var value = this.toString(), power = Math.pow(10, precision || 0); return oldToFixed.call((Math.round(value * power) / power), precision); }; }()); |
Here’s a simple test.
// Programmer: Larry Battle // Link: http://bateru.com/news/2012/03/code-of-the-day-fix-for-number-prototype-tofixed (function (root) { "use strict"; var log = function( str ){ root.document.body.innerHTML += "log: " + str + "<br/>"; }, assert = function (a, b ) { var message = a + ' !== ' + b; message += ( a === b ) ? "=> true" : "=> false"; log( message ); }; assert((0.595).toFixed(2), "0.59"); assert((0.9).toFixed(0), "1"); Number.prototype.toFixed = (function () { var oldToFixed = Number.prototype.toFixed; return function (precision) { var value = this.toString(), power = Math.pow(10, precision || 0); return oldToFixed.call((Math.round(value * power) / power), precision); }; } ()); log("Applying the toFixed fix."); assert((0.595).toFixed(2), "0.60"); assert((0.9).toFixed(0), "1"); }(this)); |
Demo: Link
Update!
Improved code here
(Page view Count: 84)