回答編集履歴

2

文言修正

2021/04/03 16:32

投稿

SHOMI
SHOMI

スコア4079

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

1

コード追記

2021/04/03 16:32

投稿

SHOMI
SHOMI

スコア4079

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