获取数字小数部分的最佳方法

Best way to get the Fractional Part of a Number

给定 const auto foo = 13.42 我想得到数字的小数部分,所以 .42

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

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

我是否有动力不简单地使用 fmod

我能想到的两种方法,要么是强制转换,要么是用 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;
}

Quick Bench 结果显示 fmod 方法是迄今为止最慢的选项,而演员表是最快的:QuickBench