タグ

TIPSと小数に関するwogawaraのブックマーク (3)

  • JavaScriptにおける、丸め誤差の掛け算テスト

    JavaScriptにおける、丸め誤差の掛け算テスト 単価: 数量: ※計算ボタンを押してみてください。 どんな結果が出てくるでしょうか? 結果: 四捨五入: ※とてもカンタンな計算なのに、こんなになってしまいます(; ;)。 【原因】 計算機における丸め誤差が原因です。 通常の数値計算ルーチンは数値はすべて2進数扱いにするが、 2進数では10進数の小数を表現しきれないためにこういう現象がおこる。 2進数の桁は2の累乗扱いになるわけだが、小数だと、2の-1乗(つまり1/2)、 2の-2乗(1/4)という単位になる。 したがって、2のマイナス何乗かの数値の合成でうまく表現できない。 数値は無限小数になって、最後の桁を切り捨てした部分の誤差ができてしまう。 補正後 ※いったん1000倍してから積を求め、積を1000で割った後四捨五入

  • 小数点以下の桁数を固定した表現を得る - ぱせらんメモ

    JavaScriptで小数点以下1桁に固定した数値を表示させる方法について悩んでいる人がいたので調べてみた。 というのも、何も考えずに次のようなコードを書くと2.0と表示させたいのに2と表示されてしまうようだ。 var value = 2.0; target_element.innerHTML = value; valueが2.1や2.01であればその通りに表示されるのだが、小数点以下の省略可能な0は省略されてしまうらしい。 で、安直な解決方法としては整数の場合に文字列として".0"を連結するという案が思いつくわけだが、他人にソースを見られたときに格好悪いのでスマートな解決方法があるなら知りたい、ということらしい。 まぁ、上手くやってくれそうなメソッドぐらいあるだろうとなんとなく思ったので調べてみたらあった。 Number.toFixed(丸め位置); 数値またはNumberオブジェクトの

    小数点以下の桁数を固定した表現を得る - ぱせらんメモ
  • JavaScript - 書式チェック

    第4弾は、書式チェックです。 日付チェック [js] /** * 指定された文字列が有効な日付かチェックします。 * ※閏年判定含む。 * * @param argValue チェック対象日付(8桁の半角数字(yyyymmdd)の書式) * @return 日付として有効な場合はtrue、 * 日付として無効な場合はfalse */ function isDate(argValue) { if (isEmpty(argValue)) { // 未入力の場合 return false; } if (argValue.length != 8 ) { // 8桁以外の場合 return false; } if (!isNumeric(argValue)) { // 半角数字以外の文字列が含まれている場合 return false; } var iYear = parseInt(argValue.

  • 1