Expand description
价格与小数工具(utility.py:275-318 的忠实移植)。
Python 版用 Decimal(str(value)) 做精确十进制运算,不能用朴素 f64
替代:经典反例 floor(0.3 / 0.1) 在 f64 下是 2(0.3/0.1=2.9999…),
而 Python 版给出 0.3。本模块以「十进制重表 → i128 整数比」复刻该语义。
十进制来源:Python str(float) 与 Rust Debug for f64 都是最短往返
表示(0.1 → "0.1",100.0 → "100.0",1e-5 → "1e-5"),故可从
两者的字符串形态拿到同一组十进制数字。
舍入规则对齐 Python:
round_to用 half-even(Pythonround(Decimal)默认ROUND_HALF_EVEN)floor_to向-∞、ceil_to向+∞(Pythonmath.floor/ceil)
value 与 target 各自只解析一次( Mantissa×10^-scale 形式直进整数比); target 的符号折叠进比值分子,保证分母恒正,平局/方向语义统一。
Functions§
- ceil_to
- 向
+∞取整到target的整数倍(Pythonceil_to,utility.py:295)。 - floor_
to - 向
-∞取整到target的整数倍(Pythonfloor_to,utility.py:285)。 - get_
digits - 小数位数(Python
get_digits,utility.py:305)。 - round_
to - 取整到
target的最近整数倍,平局取偶(Pythonround_to,utility.py:275)。 - try_
ceil_ to ceil_to的可失败版本。- try_
floor_ to floor_to的可失败版本。- try_
round_ to round_to的可失败版本;输入非有限 / target 为 0 / 溢出时返回None。