Trong khi không có Double.max
, nó được xác định trong tiêu đề C float.h
, mà bạn có thể truy cập trong Swift qua import Darwin
.
import Darwin
let fmax = FLT_MAX
let dmax = DBL_MAX
Đây là khoảng 3.4 * 10^38
và 1.79 * 10^308
tương ứng.
Nhưng lưu ý rằng nó không đơn giản như vậy với các số dấu chấm động (nó không bao giờ đơn giản với các số dấu phẩy động). Khi cầm số này lớn, bạn sẽ mất độ chính xác theo một cách giống như việc mất độ chính xác với những con số rất nhỏ, vì vậy:
let d = DBL_MAX
let e = d - 1.0
let diff = d - e
diff == 0.0 // true
let maxPlusOne = DBL_MAX + 1
maxPlusOne == d // true
let inf = DBL_MAX * 2
// perhaps infinity is the “maximum”
inf == Double.infinity // true
Vì vậy, trước khi bạn nhận được vào một số tính toán rằng có thể có thể chải lên chống lại những giới hạn này, có lẽ bạn nên đọc trên điểm nổi. Here và here có lẽ là một khởi đầu tốt. câu trả lời
Nguồn
2015-02-15 12:23:19
Tôi đang thử bạn mã trong sân chơi Xcode và nhận được '(+ vô cực)' cho Double và 340,282,346,638,529.000.000.000.000.000.000.000.000.000.0 cho Float. Tại sao Double và Int64 đều có 64bit nhưng double có thể lưu trữ nhiều số hơn? –
Bạn cần tìm hiểu về biểu diễn dấu phẩy động. Bắt đầu với [bài viết wikipedia] (http://en.wikipedia.org/wiki/Floating_point) và cũng có [phần giới thiệu] này (http://introcs.cs.princeton.edu/java/91float/) –
Cảm ơn bạn nhiều. Tôi sẽ đọc tất cả. –