私は2つの整数変数partial
とtotal
を持っています。進行中ですので、partial
はゼロから開始し、1つずつ、total
の値に上がります。二重にキャストせずに2つの整数を割り算
私が(0.0から1.0へ)進行状況を示す分数の値を取得したい場合は、私は次の操作を行うことがあります。
double fraction = double(partial)/double(total);
しかし合計が大きすぎる場合、倍にする変換が情報を失う可能性があります。
実際には、失われた情報の量は許容されますが、2つの値の間の分数を減らして情報を失うアルゴリズムまたは標準機能があるのだろうかと思いました。
'double'は53ビットの仮数を持っています - あなたは' total'が> 53ビットかもしれないと言っていますか? –
'partial'と' total'のデータ型は何ですか? IIRCの「double」は、精度を損なうことなく32ビット整数を任意の値に保持できます。 –
まあ、 'total'は'> 2^53'の値を持つ必要があります。これは10進数で約16桁の数字です。私は本当にあなたがそのような大きな数字を持っているのだろうかと思います。この場合、私はあなたの整数が64ビット幅であることを願っています。そうでなければ、最初は十分ではありません。 –