入力した値と異なる値がでてくる

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

入力した値と異なる値がでてくる

#1

投稿記事 by ジェリナゲ » 11年前

#include <stdio.h>

int main(void){
float no;
printf("実数を入力してください :"); scanf("%f",&no);
printf("あなたは%fと入力しましたね\n",no);

return(0);

}

このプログラムで4.5などはそのまま4.500000と表示されるのですが、57.3などになると、57.299999など異なる値がでてくるのですがなぜでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 入力した値と異なる値がでてくる

#2

投稿記事 by softya(ソフト屋) » 11年前

10進数ではない2進数の浮動小数点は10進数として表示しようとすると10進数ではありえない誤差を生じます。
今回のはその誤差です。
「日経PC21 / 演算誤差の正体 - IEEE 754 浮動小数点数の仕組み」
http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ジェリナゲ
記事: 17
登録日時: 11年前

Re: 入力した値と異なる値がでてくる

#3

投稿記事 by ジェリナゲ » 11年前

わかりました。ありがとうございます!

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

Re: 入力した値と異なる値がでてくる

#4

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

解決でしたら、解決チェックをお願いします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ジェリナゲ
記事: 17
登録日時: 11年前

Re: 入力した値と異なる値がでてくる

#5

投稿記事 by ジェリナゲ » 11年前

ありがとうございます

閉鎖

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