获得数字的分数部分的最佳方法

时间:2018-03-19 21:19:45

标签: c++ decimal modulo fractions fmodf

鉴于const auto foo = 13.42我想得到数字小数部分,所以 .42

我倾向于使用fmod,例如:fmod(foo, 1.0)

但我也可以做foo / static_cast<int>(foo) - 1.0或者其他一些神秘的方法。

我是否有动力不仅仅使用fmod

1 个答案:

答案 0 :(得分:6)

我可以想到两种方式,使用std::floor

进行投射或舍入
int main()
{    
    const auto foo = 13.53;

    auto firstWay = foo - static_cast<long long>(foo);  // Truncating via cast and subtracting

    auto otherWay = foo - std::floor(foo); // Rounding down and subtracting

    return 0;
}

快速工作台结果显示fmod方法是迄今为止最慢的选项,而演员是最快的:QuickBench