入力した数が9以下のとき10で割るとなぜか0.000…という結果が出る

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
残念
記事: 36
登録日時: 5年前

入力した数が9以下のとき10で割るとなぜか0.000…という結果が出る

#1

投稿記事 by 残念 » 5年前

こんばんは。残念というものです。
今回、入力した数を10で割り、表示させるといったことをしたく、
このようなコードを実行したところ、

コード:

#include<stdio.h>

double axn(int t){
	double n = t/10;
	
	return n;
}


int main(void){

	
	int i,a;
	double ax;
	
	for (i = 0; i < 10; i++){
		scanf("%d",&a);
		ax = axn(a);
		printf("i=%d\n",a);
		printf("ax=%f\n", ax);
	}
	
	
	return 0;
}




結果は、
iが10より小さいとき
「i=〇〇
ax=0.000000」

という結果が出ました。
(私の予想では
i=9のときなら、
i=9
ax=0.900000
という結果が出ると考えていました)
このコードのどこに問題点があるか、教えていただけたら幸いです。
最後に編集したユーザー 残念 on 2015年7月26日(日) 20:11 [ 編集 2 回目 ]

アバター
みけCAT
記事: 6310
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 入力した数を10で割るとなぜか0.000…という結果が出る

#2

投稿記事 by みけCAT » 5年前

残念 さんが書きました:結果は、
iがどんな値でも
「i=〇〇
ax=0.000000」

という結果が出ました。
再現できませんでした。
処理系のバグの疑いがあります。

入力データ

コード:

10
20
30
40
50
-20
-31
-50
-62
-12345
出力データ

コード:

i=10
ax=1.000000
i=20
ax=2.000000
i=30
ax=3.000000
i=40
ax=4.000000
i=50
ax=5.000000
i=-20
ax=-2.000000
i=-31
ax=-3.000000
i=-50
ax=-5.000000
i=-62
ax=-6.000000
i=-12345
ax=-1234.000000
残念 さんが書きました:このコードのどこに問題点があるか、教えていただけたら幸いです。
4行目に、整数同士の割り算を行っているので小数点以下が切り捨てられるという問題点があります。
最後に編集したユーザー みけCAT on 2015年7月26日(日) 20:05 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

残念
記事: 36
登録日時: 5年前

Re: 入力した数を10で割るとなぜか0.000…という結果が出る

#3

投稿記事 by 残念 » 5年前

みけCATさん、ご指摘有難うございます。
申し訳ありませんでした!
10以上では、普通に予想道理の結果となっていました。
修正します。

残念
記事: 36
登録日時: 5年前

Re: 入力した数が9以下のとき10で割るとなぜか0.000…という結果が出る

#4

投稿記事 by 残念 » 5年前

そして、

コード:

double axn(int t){
	double n = t/10;
	
	return n;
}
の部分を

コード:

double axn(int t){
	double n = t/10.0;
	
	return n;
}
こう修正したところ、無事成功しました。
有難うございました。

閉鎖

“C言語何でも質問掲示板” へ戻る