如何让Rust fastnum库除法返回Inf而非触发panic?
解决fastnum库除法返回Inf而非panic的问题
fastnum库默认的除法运算符(/)在除以零时会触发panic,但要实现返回±Inf的行为,你可以直接使用库提供的非恐慌式除法方法:
- 使用
Decimal::div_inf方法:该方法专门适配完整浮点语义,除以零时会返回对应的正无穷或负无穷,而非panic。示例代码如下:
use fastnum::Decimal; // 正数除以零返回正无穷 let positive_inf = Decimal::from(5).div_inf(Decimal::ZERO); assert!(positive_inf.is_infinite() && positive_inf.is_positive()); // 负数除以零返回负无穷 let negative_inf = Decimal::from(-5).div_inf(Decimal::ZERO); assert!(negative_inf.is_infinite() && negative_inf.is_negative());
如果你的fastnum版本中没有div_inf方法,建议升级到最新版本,或者查阅库的内部文档确认对应方法名称——部分版本可能使用div_with_inf之类的命名。目前库的公开文档未明确全局配置开关,直接调用专用除法方法是最可靠的方案。
内容的提问来源于stack exchange,提问作者rwallace
相关产品推荐
相关产品推荐

