fix: show 4 decimal places for prices under 00 (XRP/SOL)

This commit is contained in:
root 2026-02-28 10:22:52 +00:00
parent 2c28d660ce
commit fb37dfb288

View File

@ -32,6 +32,12 @@ interface SummaryBar {
type Symbol = "BTC" | "ETH" | "XRP" | "SOL";
type Interval = "1m" | "5m" | "15m" | "1h";
// 价格格式化:<100显示4位小数>=100显示1位
function fmtPrice(p: number): string {
const digits = p < 100 ? 4 : 1;
return p.toLocaleString("en-US", { minimumFractionDigits: digits, maximumFractionDigits: digits });
}
const INTERVALS: { label: string; value: Interval }[] = [
{ label: "1m", value: "1m" },
{ label: "5m", value: "5m" },
@ -117,7 +123,7 @@ function LiveTrades({ symbol }: { symbol: Symbol }) {
{trades.map(t => (
<tr key={t.agg_id} className="border-b border-slate-50 hover:bg-slate-50">
<td className={`px-3 py-1.5 font-mono font-semibold ${t.is_buyer_maker === 0 ? "text-emerald-600" : "text-red-500"}`}>
{t.is_buyer_maker === 0 ? "▲" : "▼"} {t.price.toLocaleString("en-US", { minimumFractionDigits: 1, maximumFractionDigits: 1 })}
{t.is_buyer_maker === 0 ? "▲" : "▼"} {fmtPrice(t.price)}
</td>
<td className="px-3 py-1.5 text-right font-mono text-slate-600">
{t.qty >= 1000 ? `${(t.qty/1000).toFixed(2)}K` : t.qty.toFixed(symbol === "BTC" ? 4 : 3)}
@ -273,12 +279,12 @@ function FlowAnalysis({ symbol }: { symbol: Symbol }) {
{/* 右轴:价格,自适应波动范围 */}
<YAxis yAxisId="price" orientation="right" tick={{ fill: "#f59e0b", fontSize: 10 }} tickLine={false} axisLine={false} width={65}
domain={[priceYMin, priceYMax]}
tickFormatter={(v: number) => v >= 1000 ? `$${(v/1000).toFixed(1)}k` : `$${v.toFixed(0)}`}
tickFormatter={(v: number) => v >= 1000 ? `$${(v/1000).toFixed(1)}k` : `$${fmtPrice(v)}`}
/>
<Tooltip
// eslint-disable-next-line @typescript-eslint/no-explicit-any
formatter={(v: any, name: any) => {
if (name === "price") return [`$${Number(v).toLocaleString("en-US", { minimumFractionDigits: 1, maximumFractionDigits: 1 })}`, "币价(VWAP)"];
if (name === "price") return [`$${fmtPrice(Number(v))}`, "币价(VWAP)"];
return [`${Number(v).toFixed(2)}`, "Delta"];
}}
contentStyle={{ background: "#fff", border: "1px solid #e2e8f0", borderRadius: 8, fontSize: 11 }}