Ланской Кирилл, зависит от реализации и методики измерения. От нескольких раз до десятков, сотен, а может и даже тысяч в некоторых случаях (всякие питоны, жаваскрипты вместе с некоторой кривизной рук и прочее).
Ланской Кирилл,
Числа с плавающей запятой применяются чаще потому что:
1) Они сильно быстрее чисел с фиксированной точкой. Потому что короткие числа с фиксированной запятой вы можете сами запросто реализовать в целых числах (например, считайте деньги в копейках, при выводе делите на 100). Или расстояние меряйте в целых миллиметрах, а не в float метрах. Время - в милисекундах. Тут вам никакой специальный тип не нужен.
А длинные decimal, как в питоне - это очень медленно. В процессоре есть операции для работы с float/double. А с числами произвольной длины процессор работать напрямую не может. Это надо руками циклы реализовывать. То же деление - и то в столбик надо делать! А целые и float за одну операцию обрабатываются, в процессоре есть специальные цепи именно для этого.
И использовать такой медленный тип и зависимый от реализации тип - это не философия языков с/с++. Кому надо, напишут/подключат свою библиотеку, которая заточена под их нужды.
2) Числа с плавающей запятой имеют более обширное применение. Ведь редко когда вам достаточно фиксированной абсолютной точности. Как в суммах рублей, где точности до копейки хватит. Обычно вы не знаете заранее, сколько вам знаков понадобится. Очень маленькие числа нужны точнее, очень большие - не так важно. Вот и появляется идея плавающей запятой.
Ланской Кирилл, Ну, FPU уже лет 25, как часть процессора. Когда-то давно это был со-процессор. Но сейчас работа с float ничем не отличается от работы с int с точки зрения процессора.
Еще раз, если у вас числа маленькие (скажем, суммарно до 17 значащих цифр), то ваши Decimal ничем принципиально не отличаются от int64_t. И ничего в процессоре менять для них специально не надо. Не забывайте только при умножении/делении на 10^N делить/домножать, но это процессор уже умеет.
Если же они у вас длинные (до 1000 знаков, например, как в питоне), то сделать схему, которая работает с такой длинной входных данных - практически невозможно. Она будет жрать слишком много транзисторов и будет не эффективна для маленьких чисел. Поэтому вся "длинная арифметика" - выполняется кучей инструкций над кусочками длинных чисел.
Ну и почти в любом случае эти ваши Decimal можно заменить на float. Ибо часто не надо больше 18 значащих знаков. Поэтому за все время существования процессоров, никто так и не удосужился впендюрить в них специальные блоки для работы с такими числами.