Skip to main content

Module price

Module price 

Source
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(Python round(Decimal) 默认 ROUND_HALF_EVEN)
  • floor_to 向 -∞、ceil_to 向 +∞(Python math.floor/ceil)

value 与 target 各自只解析一次( Mantissa×10^-scale 形式直进整数比); target 的符号折叠进比值分子,保证分母恒正,平局/方向语义统一。

Functions§

ceil_to
向 +∞ 取整到 target 的整数倍(Python ceil_to,utility.py:295)。
floor_to
向 -∞ 取整到 target 的整数倍(Python floor_to,utility.py:285)。
get_digits
小数位数(Python get_digits,utility.py:305)。
round_to
取整到 target 的最近整数倍,平局取偶(Python round_to,utility.py:275)。
try_ceil_to
ceil_to 的可失败版本。
try_floor_to
floor_to 的可失败版本。
try_round_to
round_to 的可失败版本;输入非有限 / target 为 0 / 溢出时返回 None。