0
我知道這應該避免,但不幸的是我必須在混合計算中使用整數和浮點數(雙精度)。標題已經說明了這個問題: 只要沒有溢出,下面的代碼是否可以保證與所有C++浮點實現一起工作(無聲明),無論數值如何?是int(doubleValue)保證小於或等於doubleValue爲正值
編輯:忘記提到該值始終爲正
double realSplit = seg.squareLength()/sqr(maxLength);
int split = realSplit;
assert(realSplit-split >= 0.0);
@netcoder:有一個隱含的「演員」,你也可以寫int split = int(realSplit),這將是相同的,但實際上並不是一個真正的演員,只要我得到的詞的意思鑄右 – Martin
這是隱含的,但是會丟失數據,因此編譯器可能會警告您。使用演員陣容使其消失。 :) – netcoder
有趣的是,它不,雖然我對警告非常嚴格。我使用gcc(4.4.3)和-Wall -Wextra以及更多與這種情況無關的內容。哪個gcc選項應該對此提出警告? – Martin