これを "0.00000006716610282340639" と表示したいのですが、どうしたらいいでしょうか?
普通に表示すると "-6.716610282340639e-8" になってしまいます。
toString() しても同様です。
toFixedを使います。
var n = -6.716610282340639e-8; document.write(n.toFixed(20));
ただし、標準仕様では有効桁数 20 までしかサポートしていないため、それ以降が丸められてしまいます。
toFixedを使います。
var n = -6.716610282340639e-8; document.write(n.toFixed(20));
ただし、標準仕様では有効桁数 20 までしかサポートしていないため、それ以降が丸められてしまいます。
Number.toFixed() と言うメソッドがあるんですが、有効桁数を超えてしまうので自作 (toFixed2)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript"> <!-- Number.prototype.toFixedAuto = function() { this.toString().match(/(\d+)e[-+](\d+)/) ; try { var ret = this.toFixed(RegExp.$1.length + Number(RegExp.$2)) ; } catch (e) { var ret = e.message ; } return ret ; } Number.prototype.toFixed2 = function() { return (this.toString().match(/e/) ? this.toString().replace(/(-?)([\d.]+)e([-+]?\d+)/, function() { var n = arguments[2].replace(/\./, '') ; with (Math) var z = (new Array(abs(arguments[3]) - (arguments[3] > 0 ? floor(log(n)/LN10) - 1 : 0))).join('0') ; return arguments[1] + (arguments[3] < 0 ? '0.' + z : n) + (arguments[3] > 0 ? z : n) ; } ) : this.toString()) ; } ; onload = function() { var n = -6.716610282340639e-8 ; //var n = -6.716610282340639e21 ; document.body.innerHTML = n + '<br>' ; document.body.innerHTML += n.toFixedAuto() + '<br>' ; document.body.innerHTML += n.toFixed2() + '<br>' ; } //--> </script> </head> <body> </body> </html>
計算の結果というのは有効数字を考慮する必要があると思うのですが、
それは関係なく一定桁数表示したいのであれば、ToFixed で表示できます。
多少工夫してみたというサンプル程度のものですが、もともとの計算結果で表示されている
数値範囲まで表示するようにした例です。
<html> <head> <script type="text/javascript"> <!-- function calc(){ if ( document.m.b.value != "" ) { var res = ( document.m.a.value / document.m.b.value ).toString(); document.m.d.value = res; if ( res.indexOf("e-") >= 0 ) { document.m.c.value = ( document.m.a.value / document.m.b.value ).toFixed( res.indexOf("e-") + parseInt(res.substring( res.indexOf("e-") + 2, 100 ) ) - 2 ); } else { document.m.c.value = res; } } } // --> </script> </head> <body> <form name="m"> <input type="text" name="a" onchange="calc()" size=40> ÷<input type="text" name="b" onchange="calc()" size=40> <br> =<input type="text" name="c" size=80>(全桁表示) <br> =<input type="text" name="d" size=80>(指数表示) </form> </body> </html>
片手落ちですが、計算結果が1以上の指数表示には対応していません。
コメント(1件)
#### e-21 以下は0になってしまいますので、目的に合わせて記述ください。