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

Swift中String转Int异常:"1.0"转Int结果为0而非1的问题排查

问题原因解析

这是因为你调用了两个完全不同的Int初始化方法,它们的行为逻辑存在本质差异:

  • 针对字符串的初始化器 Int(_ string: String?):
    这个方法要求输入的字符串必须是标准纯整数格式(仅允许数字、可选正负号,不能包含小数点或其他非数字字符)。当传入"1.0"时,字符串里的小数点不符合格式要求,初始化直接失败返回nil,后续?? 0触发兜底逻辑,最终输出0。

  • 针对浮点数的初始化器 Int(_ double: Double):
    这个方法的作用是将Double类型数值转换为Int,逻辑是直接截断小数部分、保留整数位。所以Int(1.0)会把浮点数1.0转换成整数1,输出结果符合预期。

如果想让"1.0"解析出整数1,需要先把字符串转成Double再转成Int,示例代码如下:

print("int==1.0--\(Int(Double("1.0") ?? 0.0))")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:22:02