为什么 DBL_MIN 不是负数(在 Swift 中)?
Why is DBL_MIN not negative (in Swift)?
为什么表达式 DBL_MIN < 0
returns false
?
为什么与 DLB_MIN
的比较似乎表明 DBL_MIN
是积极的?
let a = DBL_MIN // 2.225073858507201e-308
let b = DBL_MAX // 1.797693134862316e+308
if a < 0.0 {
print("1. DBL_MIN is indeed less than zero") // doesn't print (unexpected)
}
if DBL_MIN < 0.0 {
print("2. DBL_MIN is indeed less than zero") // doesn't print (unexpected)
}
if DBL_MIN > 0.0 {
print("3. DBL_MIN is larger than zero?") // prints (unexpected)
}
if DBL_MIN > DBL_MAX {
print("4. DBL_MIN did some strange flip?") // doesn't print (OK)
}
if b > 0.0 {
print("5. DBL_MAX is indeed larger than zero") // prints (OK)
}
/* printout:
3. DBL_MIN is larger than zero?
5. DBL_MAX is indeed larger than zero */
我怀疑这与浮点精度有关,但我自己无法真正解释。
我正在使用 Swift 2.1.1 和 XCode 7.2。
从最大负数的意义上说,它不是最小值,而是最接近零的数字,可以表示为 Double
:
2.225073858507201 * 10 ^ -308
这就是一个正值。 -
表示负指数,而不是负的总值。
为什么表达式 DBL_MIN < 0
returns false
?
为什么与 DLB_MIN
的比较似乎表明 DBL_MIN
是积极的?
let a = DBL_MIN // 2.225073858507201e-308
let b = DBL_MAX // 1.797693134862316e+308
if a < 0.0 {
print("1. DBL_MIN is indeed less than zero") // doesn't print (unexpected)
}
if DBL_MIN < 0.0 {
print("2. DBL_MIN is indeed less than zero") // doesn't print (unexpected)
}
if DBL_MIN > 0.0 {
print("3. DBL_MIN is larger than zero?") // prints (unexpected)
}
if DBL_MIN > DBL_MAX {
print("4. DBL_MIN did some strange flip?") // doesn't print (OK)
}
if b > 0.0 {
print("5. DBL_MAX is indeed larger than zero") // prints (OK)
}
/* printout:
3. DBL_MIN is larger than zero?
5. DBL_MAX is indeed larger than zero */
我怀疑这与浮点精度有关,但我自己无法真正解释。
我正在使用 Swift 2.1.1 和 XCode 7.2。
从最大负数的意义上说,它不是最小值,而是最接近零的数字,可以表示为 Double
:
2.225073858507201 * 10 ^ -308
这就是一个正值。 -
表示负指数,而不是负的总值。