簡體   English   中英

C++ RoundUp 就像在 Excel 那個樓層的負數和正數上的 ceil

[英]C++ RoundUp like in Excel that floor's negative numbers and ceil's on positive numbers

Excel 有一個名為 ROUNDUP 的 function,這不是數學家,我會稱之為真正的向上或至少對我來說更合乎邏輯,因為它使得像 0.5 這樣的正值變成 1,像 -0.5 這樣的負值變成 -1 . 因此,換句話說,Excel ROUNDUP 在 0.5 值上執行 C++ ceil 等效值,在 -0.5 值上執行 C++ 等效值。

C++ 中沒有任何內置功能嗎? 是的,我知道我可以制作自己的 function,但這違背了我需要它作為自定義 function 的原因,它確定要四舍五入的數字是正數還是負數,然后需要一個 IF 語句!

function 沒有內置從零舍入。 但是您可以編寫自己的代碼而無需任何明顯的if語句。

double RoundAwayFromZero(double v) {
    auto s = std::copysign(1.0, v);
    return s * std::ceil(v * s);
}

這使用copysign來獲取正確簽名的 1.0 值,然后使用該值使該值變為正數,使用ceil將其從 0 舍入,然后將正確的符號恢復到結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM