繁体   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