「数値型の計算誤差」の版間の差分

編集の要約なし
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/tutorial/calculation-error/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}}
[[Category:チュートリアル]]
[[Category:チュートリアル]]
AliceScriptの数値型は、倍精度浮動小数点数数値型と定められており、この規格はIEEE754として標準化されています。
AliceScriptの数値型は、倍精度浮動小数点数数値型と定められており、この規格はIEEE754として標準化されています。
16行目: 18行目:


なおこのような誤差は、AliceScript固有のものではありません。IEEE 754の2進浮動小数点形式を採用しているシステムでは、同じことが起こりえます。
なおこのような誤差は、AliceScript固有のものではありません。IEEE 754の2進浮動小数点形式を採用しているシステムでは、同じことが起こりえます。
<math>\text {abcdefghijklmnopqrstuvwxyzàáâãäåæçčďèéěêëìíîïňñòóôõöřšť÷øùúůûüýÿž}</math>


=回避策=
=回避策=
41行目: 42行目:
   }
   }
==一度整数にした後で変換する==
==一度整数にした後で変換する==
他には、例えば一度整数にしてから計算する方法が考えられます。次の例では、二つの数を整数にすることができる数<code>dis ** 10</code>を求めて二数を整数にした後、計算を行うことで誤差を防ぎます。ただしこの場合でも、有効数字15桁以上の数は正確に扱うことができません。
他には、例えば一度整数にしてから計算する方法も考えられます。次の例では、二つの数を整数にすることができる数<code>dis ** 10</code>を求めて二数を整数にした後、計算を行うことで誤差を防ぎます。ただしこの場合でも、有効数字15桁以上の数は正確に扱うことができません。
  import “Alice.Math”;
  import “Alice.Math”;
   
   
86行目: 87行目:
     return (result / (dis ** 10));
     return (result / (dis ** 10));
   }
   }
print(NumEqual(0.1+0.2,0.3));//出力例:true
print(Sum(0.1,0.2));//出力例:0.3