Fix BTC option prices losing trailing zeros in display.
Integer tick formatting was stripping zeros (1370 -> 137), so hedge-plan quotes looked wrong versus the options list. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -45,7 +45,9 @@
|
||||
let decimals = 0;
|
||||
if (tick < 1) decimals = Math.max(0, -Math.round(Math.log10(tick)));
|
||||
else if (String(tick).indexOf(".") >= 0) decimals = String(tick).split(".")[1].length;
|
||||
let s = n.toFixed(decimals).replace(/\.?0+$/, "");
|
||||
let s = n.toFixed(decimals);
|
||||
// 仅裁小数尾零;整数 tick(BTC=5)时绝不能把 1370 裁成 137
|
||||
if (decimals > 0) s = s.replace(/\.?0+$/, "");
|
||||
return s || "0";
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,9 @@
|
||||
let decimals = 0;
|
||||
if (tick < 1) decimals = Math.max(0, -Math.round(Math.log10(tick)));
|
||||
else if (String(tick).indexOf(".") >= 0) decimals = String(tick).split(".")[1].length;
|
||||
let s = n.toFixed(decimals).replace(/\.?0+$/, "");
|
||||
let s = n.toFixed(decimals);
|
||||
// 仅裁小数尾零;整数 tick(BTC=5)时绝不能把 1370 裁成 137
|
||||
if (decimals > 0) s = s.replace(/\.?0+$/, "");
|
||||
return s || "0";
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,10 @@
|
||||
let decimals = 0;
|
||||
if (tick < 1) decimals = Math.max(0, -Math.round(Math.log10(tick)));
|
||||
else if (String(tick).indexOf(".") >= 0) decimals = String(tick).split(".")[1].length;
|
||||
return n.toFixed(decimals).replace(/\.?0+$/, "") || "0";
|
||||
let s = n.toFixed(decimals);
|
||||
// 仅裁小数尾零;整数 tick(BTC=5)时绝不能把 1370 裁成 137
|
||||
if (decimals > 0) s = s.replace(/\.?0+$/, "");
|
||||
return s || "0";
|
||||
}
|
||||
|
||||
function fmtUsdc(v) {
|
||||
|
||||
@@ -116,10 +116,14 @@ def format_option_px(px: float, tick_sz: Any) -> str:
|
||||
tick = _safe_float(tick_sz)
|
||||
if tick is None or tick <= 0:
|
||||
return str(px)
|
||||
decimals = max(0, -int(round(math.log10(tick)))) if tick < 1 else 0
|
||||
if tick >= 1:
|
||||
decimals = len(str(tick).split(".")[-1]) if "." in str(tick) else 0
|
||||
return f"{px:.{decimals}f}".rstrip("0").rstrip(".") or "0"
|
||||
if tick < 1:
|
||||
decimals = max(0, -int(round(math.log10(tick))))
|
||||
return f"{px:.{decimals}f}".rstrip("0").rstrip(".") or "0"
|
||||
# tick>=1(如 BTC 期权 tickSz=5):只按整数展示,禁止 rstrip('0') 把 1370 变成 137
|
||||
if "." in str(tick):
|
||||
decimals = len(str(tick).split(".")[-1])
|
||||
return f"{px:.{decimals}f}".rstrip("0").rstrip(".") or "0"
|
||||
return str(int(round(float(px))))
|
||||
|
||||
|
||||
def format_usdc_amount(v: float | None) -> str | None:
|
||||
|
||||
@@ -17,6 +17,10 @@ def test_round_option_px():
|
||||
assert round_option_px(14.9184, "0.2", "sell") == 14.8
|
||||
assert round_option_px(14.81, "0.2", "buy") == 15.0
|
||||
assert format_option_px(14.8, "0.2") == "14.8"
|
||||
# BTC 期权 tickSz=5: 整数末尾 0 必须保留 (1370 不能显成 137)
|
||||
assert format_option_px(1370, "5") == "1370"
|
||||
assert format_option_px(1160, 5) == "1160"
|
||||
assert format_option_px(1000, "5") == "1000"
|
||||
|
||||
|
||||
def test_premium_per_sheet():
|
||||
|
||||
Reference in New Issue
Block a user