1

解析している CSV のすべてのレコードが通貨である状況がありますが、値は小数点で区切られていません。たとえば、値 '1234' は実際には '12.34' であり、'12345' は '123.45' です。

これらの値を手動で 10 進数に変換する方法を見つけるのに苦労しています。次のような出力が得られるため、number_format を使用することはできません。

$original_num = 1234;

$formatted_num = number_format($original_num, '2', '.', '');

$formatted_num = 1234.00; //Output

もう 1 つの問題は、2 つの数値を結合した後に「436257.5」のような値になることがあることです。これは実際には「436.2575」であるため、「.」を手動で押し込むことはできません。文字列の端から 2 か所。ファイルの解析中に別の形式にすることを検討する必要がありますか?

4

2 に答える 2

3

整数を使用して常に小数点以下 2 桁の精度で小数を表すと仮定すると、100 で除算して正しい位置にドットを挿入するだけです。

「組み合わせる」って何?掛けるってこと?各乗算後に再正規化する必要があり、異なる精度の小数を表す状況には決して陥らないでください (精度を追跡しない限り、それは可能ですが、それはお尻の痛みであり、通常は不要です)。

function multiply($a, $b) {
  return round($a * $b / 100);
}

function format($a) {
  return sprintf("%.2f", $a / 100);
}
于 2012-06-16T12:48:56.480 に答える