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