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

回答編集履歴

2

文言修正

2021/04/03 16:32

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,6 +1,5 @@
1
1
  10進数の0.8や0.2は2進数では無限循環小数となり正確に表現できないためです。
2
- 乗算結果がintの範囲を超えないのであれば、式を変形して先に乗算をすれば誤差が少なくなります。
2
+ 乗算結果がintの範囲を超えないのであれば、式を変形して先に乗算をすればよいです。
3
- 今回の場合は`n`が`100`なので誤差なく求まります。
4
3
  ```diff
5
4
  -ans = n * (1 - (double)m / 100);
6
5
  +ans = n - n * m / 100;

1

コード追記

2021/04/03 16:32

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,1 +1,7 @@
1
- 10進数の0.8や0.2は2進数では無限循環小数となり正確に表現できないためです。
1
+ 10進数の0.8や0.2は2進数では無限循環小数となり正確に表現できないためです。
2
+ 乗算結果がintの範囲を超えないのであれば、式を変形して先に乗算をすれば誤差が少なくなります。
3
+ 今回の場合は`n`が`100`なので誤差なく求まります。
4
+ ```diff
5
+ -ans = n * (1 - (double)m / 100);
6
+ +ans = n - n * m / 100;
7
+ ```