('connect');
@@ -590,9 +600,10 @@ export default function App() {
// 计算预期接收金额
const expectedReceive = useMemo(() => {
if (!selectedAsset || !amount) return '0';
- const { numerator, denominator } = selectedAsset.ratio;
- const amountNum = parseFloat(amount);
- const ratioNum = Number(numerator) / Number(denominator);
+ const amountNum = Number(amount);
+ if (!Number.isFinite(amountNum)) return '0';
+ const ratioNum = Number(selectedAsset.ratio.numerator) / Number(selectedAsset.ratio.denominator);
+ if (!Number.isFinite(ratioNum)) return '0';
return (amountNum * ratioNum).toFixed(8).replace(/\.?0+$/, '');
}, [selectedAsset, amount]);
@@ -734,9 +745,7 @@ export default function App() {
) : (
sortedAvailableAssets.map((asset, i) => {
- const rate = (Number(asset.ratio.numerator) / Number(asset.ratio.denominator))
- .toFixed(4)
- .replace(/\.?0+$/, '');
+ const rate = formatRatioRate(asset.ratio);
const routeLabel = `${asset.chain}/${asset.symbol} ${t('common.arrow')} ${asset.targetChain}/${asset.targetAsset}`;
return (
{t('confirm.ratio')}
- {`${selectedAsset?.ratio.numerator}:${selectedAsset?.ratio.denominator}`}
+
+ {t('asset.ratio', {
+ from: selectedAsset?.symbol ?? '',
+ rate: formatRatioRate(selectedAsset?.ratio),
+ to: selectedAsset?.targetAsset ?? '',
+ })}
+