-3

そのため、小数を異なる基数で表現するプログラムがあり、その性質上、無限の小数点以下桁数を表示する可能性があります。ただし、基数 2 を試して .258 を入力すると、01000010000011000100100110111010010111100011010101 が返されますが、繰り返し小数であることは確かですが、そこで停止します。プログラムは数字を保存するのではなく、個々の数字を取得するとすぐに表示し、すぐにそれらを忘れることに注意することが重要です。コードは次のとおりです。

#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, const char * argv[])
{
    double a;
    double b;
    cout << "input base then input the decimal\n";
    cin >> a >> b;
    while (b) {
        b*=a;
        cout << int(b);
        b-=floor(b);
    }
}
4

1 に答える 1

3

変数bは倍精度浮動小数点変数です。格納する値は、0.258 に最も近い表現可能な値です。この値は、すべての 2 進浮動小数点値と同様に、終了する 2 進展開があります。結局のところ、64 ビット幅の変数に格納しています。

あなたの期待は間違っています。に格納されている数値は10 進表現bを繰り返している場合がありますが、 2 進表現は終了する必要があります。

于 2013-03-28T23:56:37.483 に答える