teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2017/04/29 22:38

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  double は内部では 10 進数でないため、大きな数でなくても 10 進数への変換によって誤差が出ます。そのため誤差が大きな問題となる場合には decimal が使われます。
2
2
 
3
3
  分数クラスは実装されている言語も多いと思いますが、約分・通分に時間がかかるために概数より重くなります。そのため用途が限られ、double の上位互換とはなりません。
4
- 例えば 1/2 + 2/3 を計算するのに乗算が二回必要で、結果を約分するのには因数分解も必要になります。これは何万回もループするような場合、大きな差になります。約分しなければ計算するたびに大きな数になってオーバーフローしがちなので、すぐに破綻します。
4
+ 例えば 1/2 + 2/3 を計算するのに乗算が二回必要で、結果を約分するのには因数分解も必要になります。これは何万回もループするような場合、大きな差になります。約分しなければ計算するたびに大きな数になってすぐにオーバーフローし破綻します。
5
5
 
6
6
  定数を展開せず定数のまま扱えるクラスというものは私は知りませんが、探せばあるかもしれません。ただしこれも用途が限られてくると思います。

1

修正

2017/04/29 22:38

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  double は内部では 10 進数でないため、大きな数でなくても 10 進数への変換によって誤差が出ます。そのため誤差が大きな問題となる場合には decimal が使われます。
2
2
 
3
- 分数クラスは実装されている言語も多いと思いますが、約分に時間がかかるために概数より重くなります。そのため用途が限られ、double の上位互換とはなりません。
3
+ 分数クラスは実装されている言語も多いと思いますが、約分・通分に時間がかかるために概数より重くなります。そのため用途が限られ、double の上位互換とはなりません。
4
+ 例えば 1/2 + 2/3 を計算するのに乗算が二回必要で、結果を約分するのには因数分解も必要になります。これは何万回もループするような場合、大きな差になります。約分しなければ計算するたびに大きな数になってオーバーフローしがちなので、すぐに破綻します。
4
5
 
5
6
  定数を展開せず定数のまま扱えるクラスというものは私は知りませんが、探せばあるかもしれません。ただしこれも用途が限られてくると思います。