swift - 为什么 DBL_MIN 不是负数(在 Swift 中)?

标签 swift exponent

为什么表达式 DBL_MIN < 0返回 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

这只是一个正值。 - 代表一个负指数,而不是一个负的整体值。

关于swift - 为什么 DBL_MIN 不是负数(在 Swift 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571802/

相关文章:

r - 如何将多个嵌套括号与指数一起使用?

swift - 二元运算符 '<' 不能应用于类型 'Double?' 和 'Int' 的操作数

c++ - CGAL二次规划求解器,如何在目标函数中输入 "x^4"?并在限制条件下?

javascript - Chrome-Javascript : Negative Exponent Calculation is wrong for > -3

c++ - 将 Oracle 的数字转换为字节,然后转换为值 + 指数

java - Java 中的指数数学

c++ - 与 Swift 中的 C++ 类交互

ios - 为什么 RxSwift Subscribe 仅在首次启动 viewWillAppear 中运行一次?

ios - 使用 Photo Kit 和 Swift 在 UICollectionViewCell 中模糊图像

swift - 如何在 SwiftUI 中显示字符串数组