You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用NumberFormatter法语拼写小数时如何让小数部分按整数连读

解决方法

PHP内置的NumberFormatter类默认处理小数拼写时会将小数位逐位转换,因此会出现17拆分为un sept的情况。你可以手动拆分数值的整数部分与小数部分,分别做拼写转换后再拼接,即可实现需求:

// 初始化法语拼写格式化器
$dec_words = new NumberFormatter("fr", NumberFormatter::SPELLOUT);

// 待转换的小数
$num = 20.17;

// 拆分整数与小数部分,转字符串处理避免浮点数精度误差
$num_str = (string)$num;
$parts = explode('.', $num_str);

// 分别格式化两部分
$int_part = $dec_words->format($parts[0]);
$decimal_part = $dec_words->format($parts[1] ?? 0);

// 拼接结果
$result = $int_part . ' virgule ' . $decimal_part;

echo $result;

运行上述代码即可输出你期望的结果:vingt virgule dix-sept。

补充注意点

  • 如果你的场景需要处理固定小数位(比如金额类场景保留2位小数),可以先用number_format对数值做精度统一后再拆分,避免浮点数精度导致的小数部分异常
  • 如果存在小数部分为0的场景,可以根据需求判断是否省略小数部分的输出

内容的提问来源于stack exchange,提问作者Joseph Jnr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:48:04