0

これは避けるべきだと思いますが、残念ながら、混合計算では整数と浮動小数点(double)を使用する必要があります。タイトルにはすでに質問が記載されています。オーバーフローがない限り、次のコードは数値に関係なくすべてのc ++浮動小数点実装で機能する(アサートなし)ことが保証されていますか?

編集:値が常に正であることを言及するのを忘れました

double realSplit = seg.squareLength() / sqr(maxLength);
int split = realSplit; 
assert(realSplit-split >= 0.0); 
4

1 に答える 1

7

浮動小数点値を整数値に変換すると、小数部が破棄されます。0以上の値の場合、アサートが保持されます。0未満の値の場合は、逆になります。

于 2012-09-01T16:38:05.310 に答える