私はプログラミング初心者です。小数点 X.YZ を含む数値を XYZ に変換する単純な関数が必要でした。十分な 10 倍を掛けて、doubleからintへの変換を使用して行いました。
int main()
{
std::cout << "Number: " << std::endl;
double a;
// the uninitialized b was pointed out, its not the issue
long b = 0;
std::cin >> a;
while(b!=a)
{
a*=10;
b=a;
}
std::cout << a << std::endl;
return 0;
}
これは 90% の確率で機能します。132.54 のような一部の数値では、プログラムは無限に長く実行されます。132.547(132.54よりも多くのメモリを使用する必要があります)を処理します。
だから私の質問は: long int のメモリ範囲の数値に対して 100% 機能しないのはなぜですか? なぜ 132.54 と同様の数値なのですか?
Codeblocks と GNU GCC コンパイラを使用しています。