<?php
/*** 精准处理数学表达式中的小数末尾零* @param string $expression 原始数学表达式* @return string 处理后的规范表达式*/
function formatMathExpression(string $expression): string {// 正则匹配所有小数(包含整数部分和小数部分)return preg_replace_callback('/(\d+\.\d+)/', function($matches) {$numStr = $matches[0];// 处理类似 "120.60000" → "120.6"$trimmed = rtrim(rtrim($numStr, '0'), '.');// 处理类似 "0.0000" → "0" 的情况return $trimmed === '' ? '0' : $trimmed;}, $expression);
}// 原始计算过程
$input = <<<TEXT
三角形的半周长:
= (90.4+80.4+70.4)÷2
= (170.80000+70.4)÷2
= 241.20000÷2
= 120.60000三角形的面积:
= √{120.60000×(120.60000−90.4)×(120.60000−80.4)×(120.60000−70.4)}
= √{120.60000×30.20000×40.20000×50.20000}
= √{120.60000×1214.04000×50.20000}
= √{120.60000×60944.80800}
= √7349943.84480
= 2711.07798
TEXT;// 处理计算过程
$output = formatMathExpression($input);// 格式化输出
echo "<pre>";
echo str_replace(["\r
", "\n"], PHP_EOL, $output);
echo "</pre>";
效果图: