Ответ 1
Если я имею дело с дробным центов или триллионов долларов (и я не имея ни того, ни другого), должен ли я быть касающийся отображения и хранение (но не выполнение математики) валюта, которая была выбрана для поплавка? Буду ли я когда-либо приближаться к области с неточностями с плавающей запятой изменить мои цифры?
Для целей чистого округления/отображения вы будете в безопасности, если абсолютная ошибка представления с плавающей запятой меньше, чем $0.005 (так что округление до ближайшего значения будет правильным).
С IEEE 754 с одной точностью вы можете безопасно до $131 072,00. (131 072,01 $представлено как 131072,015625, что неправильно округляет.)
Двойная точность (которую использует PHP float
) не сработает до 70 368 744 177 664,01 (которая также имеет 0,015625 для центов). Вам не о чем беспокоиться.
Если ответ на # 1 заключается в том, что я должен действительно, если это так, то почему money_format() построен таким образом?
Какой тип он должен взять? PHP не имеет встроенного десятичного типа. Также не много других языков.
Это обсуждается в "Почему значения с плавающей запятой настолько плодовиты?"