#include < stdio.h >
void main()
{
float a;
printf("小数を入力してください:");
scanf_s("%f", &a);
printf("入力した整数は%fです\n", a);
}
この最後の1が付くのはなぜですか?また解決の仕方はありますか?
一般的な浮動小数点数(IEEE754)では小数を2進数で表現するので、10進数では有限小数の値でも2進数では無限小数になり、丸め誤差が生じることがあるためです。初めたての人 さんが書きました:この最後の1が付くのはなぜですか?
この場合は、64ビットIEEE754の浮動小数点数は10進数で15桁程度の制度があるので、double型を使えば改善するかもしれません。初めたての人 さんが書きました:また解決の仕方はありますか?