Дано 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 Result показывает fmod
Подход как самый медленный вариант, а бросок как самый быстрый: QuickBench
Других решений пока нет …