が過剰に見えるかもしれませんが、何の母校にロケール任意の形式を変換しません小数としてこの関数は、ドットまたはコンマと番号の互換性があります。
function normalizeDecimal($val, int $precision = 4): string
{
$input = str_replace(' ', '', $val);
$number = str_replace(',', '.', $input);
if (strpos($number, '.')) {
$groups = explode('.', str_replace(',', '.', $number));
$lastGroup = array_pop($groups);
$number = implode('', $groups) . '.' . $lastGroup;
}
return bcadd($number, 0, $precision);
}
出力:
.12 -> 0.1200
123 -> 123.0000
123.91 -> 12345678.9100
123 456 78.91 -> 12345678.9100
123,456,78.91 -> 12345678.9100
123.456.78,91 -> 12345678.9100
123 456 78,91 -> 12345678.9100
を
あなたはドットをつぶしてから、ドットのコンマを入れ替えて浮動小数点として解析することができます。それはわずか2つです。これは決して大したことではありません。あなたがショットで何十万ものレコードをやっていない限り、 – DampeS8N