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

回答編集履歴

1

rewrite answer

2017/09/05 02:35

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,18 +1,19 @@
1
- 正値に限れば `(int)(n + 0.5)` で整数への切り上げ計算ます。
1
+ 整数`n`の20%、つまり`n / 5`の切り上げは`(n + 4) / 5`(全てint型で計算)ります。
2
2
 
3
- ```C
3
+ ```
4
4
  #include <assert.h>
5
5
  #include <stdio.h>
6
6
 
7
7
  int ceil20up(int n)
8
8
  {
9
9
  assert(0 <= n);
10
+ int r = (n + 4) / 5; // ceil(n * 20%)
10
- return (int)(n * 1.2 + 0.5);
11
+ return n + r;
11
12
  }
12
13
 
13
14
  int main()
14
15
  {
15
16
  for (int i = 1; i <= 100; i++)
16
- printf("%d->%d\n", i, ceil20up(i));
17
+ printf("%d -> %.1f -> %d\n", i, i * 1.2, ceil20up(i));
17
18
  }
18
19
  ```