Go语言仅使用main包如何判断变量是否为自然数?
Go无额外包判断自然数的实现方案
完全可以实现,不需要引入第三方包,仅用Go内置语法即可完成判断。
首先明确自然数的通用定义:通常编程场景下默认指大于等于0的整数,如果你的业务里要求自然数从1开始,调整对应判断阈值即可。
你代码里的EXPRESSION可以填入如下判断逻辑:
y < 0 || y != float64(int(y))
逻辑说明
- 第一层判断
y < 0:排除所有负数,不符合自然数的取值范围要求 - 第二层判断
y != float64(int(y)):排除带小数的浮点数,只有当浮点数的小数部分为0时,转换为int再转回float64后的值才会和原值相等
完整可运行代码示例
package main import "fmt" var y = -2.3 func main() { if y < 0 || y != float64(int(y)) { fmt.Println("non-natural number!") } }
边界情况补充
如果你的变量y可能出现超出int取值范围的超大浮点整数值、或者NaN/无穷大这类异常浮点值,可引入Go标准库math(标准库不属于额外第三方包)优化判断:
// 需要先导入 "math" EXPRESSION = math.IsNaN(y) || math.IsInf(y, 0) || y < 0 || y != math.Trunc(y)
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

