私のプラットフォームでは、unsigned long long
は64ビット(8バイト)です。私は2つのそのような変数があるとします。2つの(64ビット)整数から信頼できる整数パーセンテージ比を取得
unsigned long long partialSize;
unsigned long long totalSize;
//somehow determine partialSize and totalSize
私は確実partialSize
がtotalSize
であるどのように多くの割合(近くの整数に丸め)を決定することができますどのように? (可能であれば、前者が後者よりも少ないと仮定する必要がないなら、私はこの仮定を本当にしなければならないといいですが、それは問題ありません。 - 負)。
たとえば、次のコードは完全に防弾ですか?私の恐れは、ある種の丸め、キャスト、または変換エラーが含まれているため、ある条件下では比率が低下する可能性があります。
unsigned long long ratioPercentage
= (unsigned long long)(((double)partialSize)/((double)totalSize) * 100.0);
非常に極端な場合には、簡単な方法が「うまくいかない」ということは間違いありません。これは64ビット - > 53ビットの2つのレベルの丸めと精度の低下があるからです。 – Mysticial
@Mysticial。結果は、たかだか7ビットの精度しか必要としない。私は64→53はまったく問題ではないと言っています。 – kennytm
あなたの興味を引くかもしれない2つのリンク:1)http://kanooth.com/numbers/ 2)http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic – paulsm4