int val;
double area;
area = 188.8;
val = (int)(area * 100);
とした場合、
val = 18879 になってしまいます。
この書き方は、まずいんでしょうか?
そんなもんでしょ。
0.1の10倍は1にはならないとおもってた方がいい。
コンピューターで小数点以下の値を表現しようとすると誤差が発生するというその辺の話を調べてみた方がよいと思います。
整数の範疇で計算する分には良いんですけれど、
小数点以下が絡むと話がとたんに変わってきます。
コンピュータに計算させるときは必ずこの誤差を意識する必要があります。
わりと有名な話なのできちんと理解しておいたほうが良いですよ。
ツイート | ![]() |