鉴于const auto foo = 13.42
我想得到数字小数部分,所以 .42
我倾向于使用fmod
,例如:fmod(foo, 1.0)
但我也可以做foo / static_cast<int>(foo) - 1.0
或者其他一些神秘的方法。
我是否有动力不仅仅使用fmod
?
答案 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