浮動小数点と誤差

はじめに

 * ExcelExcelマクロ、JavaScriptなどの小数で使用すされている浮動小数で誤差が出て、
   困ったのでメモ。

浮動小数点(floating-point number)とは?

 * コンピューターで小数を扱う方式のひとつ

利点

 * 扱える範囲が広い

欠点

 * 計算時の誤差は生じやすい(詳細は下記を参照)

誤差について

 * 上記の「浮動小数点とは?」の「欠点」でも書いたが誤差が生じる

サンプル:JavaScript

* 「0.1+0.2」=>「0.30000000000000004」と表示
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<script src="">http://code.jquery.com/jquery-1.10.1.min.js">
</head>
<body>
<form>
<div id="sample1">Result</div>
Input data1:<input id="textValue1" type="text" size="50" value="0.1">
Input data2:<input id="textValue2" type="text" size="50" value="0.1">
<input id="fire" type="button" value="click me!">
</form>
<script type="text/javascript">
$("#fire").click(function(event){
  var numberValue1 = document.getElementById("textValue1").value;
  var numberValue2 = document.getElementById("textValue2").value;
  
  // [1] toLocaleString()で実装
  document.getElementById("sample1").innerHTML = parseFloat(numberValue1) + parseFloat(numberValue2);
});

</script>
</body>
</html>



関連記事

JavaScriptにおける数値の誤差

http://blogs.yahoo.co.jp/dk521123/35838885.html

Y軸のラベルが浮動小数点の誤差で表示がおかしくなる

http://blogs.yahoo.co.jp/dk521123/35833804.html