Я знаю, что преобразование типов может привести к небольшим ошибкам из-за того, что плавающие числа хранятся в двоичном формате. Тем не менее, у меня есть вариант использования числа с плавающей точкой в строке, но теперь у меня есть проблема, связанная с удалением символа:
может работать для некоторых чисел, как в моем примере, но это также не меняет того факта, что другие числа будут слишком неточными, или, скорее, что некоторые числа с плавающей запятой идентичны другим по-разному выглядящим числам с плавающей запятой. (В десятичном формате .99999... (математически правильно) идентично 1, даже если оно выглядит по-другому. В php из-за двоичного представления и ограничений памяти числа с плавающей запятой для 3467.6000976563 и 3467.60009765625318323146 имеют вид (математически-неверно) здесь идентично.)
Я знаю, что преобразование типов может привести к небольшим ошибкам из-за того, что плавающие числа хранятся в двоичном формате. Тем не менее, у меня есть вариант использования числа с плавающей точкой в строке, но теперь у меня есть проблема, связанная с удалением символа: [code]$we_all_float_down_here = (float) 3467.60009765625; $expected_string = '3467.60009765625';
echo "Last chars gets stripped:\n" . (string) $we_all_float_down_here . "\n" . $expected_string; [/code] Это выходные данные: [code]bool(false) Last chars gets stripped: 3467.6000976562 3467.60009765625 [/code] Как преобразовать число с плавающей запятой в строку, не теряя при этом ни одной цифры? https://onlinephp.io/c/b3af3
Примечание: [list] [*][code]ini_set('precision', 100);[/code] не исправит то, что некоторые значения с плавающей запятой сохраняются неточно. [*][code]number_format[/code] может работать для некоторых чисел, как в моем примере, но это также не меняет того факта, что другие числа будут слишком неточными, или, скорее, что некоторые числа с плавающей запятой идентичны другим по-разному выглядящим числам с плавающей запятой. (В десятичном формате .99999... (математически правильно) идентично 1, даже если оно выглядит по-другому. В php из-за двоичного представления и ограничений памяти числа с плавающей запятой для 3467.6000976563 и 3467.60009765625318323146 имеют вид (математически-неверно) здесь идентично.) [/list]