intへキャスト


たく  2012-05-05 20:26:44  No: 73362  IP: 192.*.*.*

int val;
double area;

area = 188.8;
val = (int)(area * 100);

とした場合、
val = 18879 になってしまいます。

この書き方は、まずいんでしょうか?

編集 削除
επιστημη  URL  2012-05-05 23:09:43  No: 73363  IP: 192.*.*.*

そんなもんでしょ。

0.1の10倍は1にはならないとおもってた方がいい。

編集 削除
PATIO  2012-05-10 16:46:36  No: 73364  IP: 192.*.*.*

コンピューターで小数点以下の値を表現しようとすると誤差が発生するというその辺の話を調べてみた方がよいと思います。
整数の範疇で計算する分には良いんですけれど、
小数点以下が絡むと話がとたんに変わってきます。

コンピュータに計算させるときは必ずこの誤差を意識する必要があります。

わりと有名な話なのできちんと理解しておいたほうが良いですよ。

編集 削除