You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Swift数值除法运算符出现计算错误的技术咨询

问题分析与修复方案

嘿,这个问题其实一眼就能看出症结——你第二个除法运算符的实现逻辑完全写反啦!

错误根源

看你定义的第二个/函数:

func / <F: BinaryFloatingPoint, I: BinaryInteger>(lhs: I, rhs: F) -> F { return rhs / F(lhs) }

当你调用b/a(b是UInt8类型的整数,a是Double类型的浮点数)时,这个函数会被触发。按照你的预期,应该是「把整数转成浮点数后除以浮点数」,也就是F(b)/a,但你现在写的是rhs/F(lhs)——相当于把被除数和除数直接颠倒了,自然会得到10.0/8.0=1.25,而不是正确的8.0/10.0=0.8。

修复后的代码

把第二个函数的返回值改成F(lhs)/rhs就完美解决了:

func / <F: BinaryFloatingPoint, I: BinaryInteger>(lhs: F, rhs: I) -> F { return lhs / F(rhs) }
func / <F: BinaryFloatingPoint, I: BinaryInteger>(lhs: I, rhs: F) -> F { return F(lhs) / rhs }

测试验证

现在再运行你的测试代码:

let a = 10.0
let b: UInt8 = 8
print(a/b) // 输出1.25(符合预期)
print(b/a) // 输出0.8(终于正确啦!)

额外小提示

如果想让你的运算符更健壮,可以考虑添加除以零的判断逻辑,避免出现运行时崩溃的情况哦~

内容的提问来源于stack exchange,提问作者oneWayTicket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:30:05