質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

759閲覧

C言語:整数の小数点以下切り上げ方法

goza711

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/09/05 01:56

ceilは使わずに整数型aの+20%した値を小数点以下切上げで求めるにはどうしたらよいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/09/05 02:24

floor関数は使って良いのですか?
goza711

2017/09/05 02:26

すいません、floor関数も使わないでお願いします。
guest

回答3

0

ベストアンサー

整数nの20%、つまりn / 5の切り上げは(n + 4) / 5(全てint型で計算)で求まります。

#include <assert.h> #include <stdio.h> int ceil20up(int n) { assert(0 <= n); int r = (n + 4) / 5; // ceil(n * 20%) return n + r; } int main() { for (int i = 1; i <= 100; i++) printf("%d -> %.1f -> %d\n", i, i * 1.2, ceil20up(i)); }

投稿2017/09/05 02:28

編集2017/09/05 02:35
yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohhoy

2017/09/05 02:36 編集

(最初の回答は四捨五入と勘違いしていたため、回答内容を書き換えました)
goza711

2017/09/05 02:39

ありがとうございます。説明が足りませんでしたが、20%は固定ではなく、可変(x%)だった場合どうなりますでしょうか?
yohhoy

2017/09/05 02:48 編集

x%が整数値なら (n * x + 99) / 100 になります。 整数分母 D で割るとき、整数分子 N に (D - 1) を足しておけば整数型のceil演算になります。 注意:値nが小さいうちは気にする必要がありませんが、部分式 n * x がint型で表現可能な値よりも大きくなる(オーバーフロー)可能性に注意してください。
goza711

2017/09/05 03:16

この式で期待通りの結果が得られました。ありがとうございました。m(_'_)m
guest

0

120掛けて100で割るのはどうでしょうか。

c

1#include<stdio.h> 2void main(){ 3 int c=563; 4 int p=20; 5 c = (c * (100 + p) + 99) / 100; 6 printf("c :%d\n",c); 7}

投稿2017/09/05 02:39

編集2017/09/05 02:48
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

c

1(int)((float)a * 1.2 + 0.9)

投稿2017/09/05 02:28

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問