PHP - 将固定数字转换为十进制,使用最后 2 位数字作为小数位


PHP - Convert fixed number into decimal, using last 2 digits as the decimal places

我遇到这样一种情况:我正在解析的 CSV 中的所有记录都是货币,但值没有用小数点分隔。例如,值"1234"实际上是"12.34","12345"是"123.45"。

我正在努力寻找一种将这些值手动转换为小数的方法。我无法用户number_format,因为它会给我一个这样的输出:

$original_num = 1234;
$formatted_num = number_format($original_num, '2', '.', '');
$formatted_num = 1234.00; //Output

另一个问题是,有时在合并两个数字后,我可能会有一个像"436257.5"这样的值,实际上是"436.2575",所以我不能只是手动从字符串末尾插入"."两个位置。在解析文件时,我是否应该考虑以不同的方式格式化它?

假设您始终使用整数来表示小数点后精度为 2 位的小数,您只需除以 100 即可将点插入正确的位置。

"结合"是什么意思?你的意思是乘法?你应该在每次乘法后重新规范化,永远不要陷入你表示不同精度的小数的情况(除非你跟踪精度,你可以这样做,但这很痛苦,通常是不必要的)。

function multiply($a, $b) {
  return round($a * $b / 100);
}
function format($a) {
  return sprintf("%.2f", $a / 100);
}

由于 number_format() 函数总是将 2 00 作为小数,因此您可以将该值除以 100。

number_format($original_num/100,2);