Trang 3 trên tổng số 3 Đầu tiênĐầu tiên 123
Từ 21 tới 28 trên tổng số 28 kết quả

Đề tài: Liệu có phải compiler bị lỗi về so sánh ???

  1. #21
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Mặc định Liệu có phải compiler bị lỗi về so sánh ???

    Trích dẫn Nguyên bản được gửi bởi Hangdtth Xem bài viết
    Mình đã up ảnh lên imgur. Liệu thông qua ảnh, có thể nói lên rằng, nếu viết 3.6 ở trong code (ko khai báo thêm gì) thì compiler auto "hiểu" 3.6 LÀ KIỂU DOUBLE ko ???
    https://imgur.com/gr4GcZ3
    Đúng thế. Xem link ở bài #5 của mình ở trên.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  2. #22
    Ngày gia nhập
    05 2017
    Bài viết
    5

    Cám ơn bạn nhé!

  3. #23
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Trích dẫn Nguyên bản được gửi bởi prog10 Xem bài viết
    p/s: có ai đọc chưa nhỉ? https://www.slideshare.net/insideHPC/beating-floating-point-at-its-own-game-posit-arithmetic
    Mình vừa mới đọc xong. Mình cảm thấy định dạng số thực này rất hay về mặt toán học, còn về mặt thực tiễn mình không biết nên không dám bàn.

    Cảm ơn bạn đã giới thiệu một slide lý thú.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  4. #24
    Ngày gia nhập
    01 2013
    Bài viết
    1,464

    Update post #17.

  5. #25
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    293

    Rốt cụt thì khi nào số float hay double mới được biểu diễn chính xác, khi số là lũy thừa của 2 hay mẫu số khi biểu diễn ở dạng phân số là lũy thừa của 2, và kể cả khi thỏa mãn điều kiện như vậy vẫn có ngoại lệ đúng không

  6. #26
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Mặc định Liệu có phải compiler bị lỗi về so sánh ???

    Số có thể biểu diễn chính xác phải là một bội của một lũy thừa của 2. (Có thể gọi là phân số với mẫu số là một lũy thừa của 2, cũng thế.) Nghĩa là có dạng Công thức toán học Latex, trong đó Công thức toán học LatexCông thức toán học Latex nguyên.

    Đó là điều kiện cần. Thêm vào đó, Công thức toán học LatexCông thức toán học Latex đều phải nằm trong một khoảng giới hạn nhất định. Và, thêm nữa, khi Công thức toán học Latex cực tiểu, khoảng giới hạn của Công thức toán học Latex thay đổi.

    Ví dụ, đối với kiểu float, Công thức toán học Latex giới hạn bởi Công thức toán học LatexCông thức toán học Latex giới hạn bởi Công thức toán học Latex hoặc Công thức toán học Latex. Những số thỏa ràng buộc này gọi là số chuẩn và được biểu diễn (ở float) với 24 bit có nghĩa. Ngoài ra, còn có các số dưới chuẩn, với Công thức toán học LatexCông thức toán học Latex hoặc Công thức toán học Latex. Thực chất, các số dưới chuẩn là các số có giá trị tuyệt đối cực nhỏ và được biểu diễn (ở float) với số bit có nghĩa ít hơn 24, nghĩa là độ chính xác thấp hơn số chuẩn.

    (Lưu ý, các số 0 âm và dương, vô cùng âm và dương là những giá trị đặc biệt, không ràng buộc bởi giới hạn trên.)
    Đã được chỉnh sửa lần cuối bởi Ada : 17-09-2017 lúc 03:21 PM. Lý do: Chính xác hóa
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  7. #27
    Ngày gia nhập
    01 2013
    Bài viết
    1,464

    Điều hết sức cơ bản khi tìm hiểu IEEE754 - 1985 là dạng chuẩn (normalized) có một bit 1 được ngầm hiểu. Tương tự như khi viết .5 thì hiểu là 0.5 vậy. Như vậy thì không biểu diễn được số 0, nhưng đây chưa phải là vấn đề. Mà vấn đề nảy sinh khi a != b nhưng a - b == 0, vì vậy bỏ luôn bit ẩn này thì thành ra không chuẩn (denormalized) hay dưới chuẩn (subnormalized). Khi gặp những số ntn máy sẽ rất lúng túng.

    Tới đây ta có thể tự ép kiểu từ long/long long qua floating (float 23, double 52).

    VD: Lấy 1.01b*2^(-126) - 1.00b*2^(-126) = 0.01b*2^(-126). Vấn đề là -126 là nhỏ nhất nên dạng chuẩn không biểu diễn được số này nữa, do 0 không được đứng đầu. Nếu không có dạng dưới chuẩn thì có ba cách xử lí:
    - KQ là 0 (đặt ra 0 trước). Vấn đề như trên.
    - KQ là số chuẩn nhỏ nhất, trừ phi a == b thì trả về 0. Rõ ràng 0 dễ chấp nhận hơn, nếu ta đặt tính trừ (tính sai số), ý nói khỏang cách gần như 0.
    - Báo lỗi bằng cách nào đó.

    Các FPU (phần tính toán số thực trong CPU hiện đại) xử lí số dưới chuẩn rất chậm, dù chấp nhận hay không.
    Đã được chỉnh sửa lần cuối bởi prog10 : 18-09-2017 lúc 09:37 AM.

  8. #28
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Nói cách khác, các số dưới chuẩn (subnormal) chủ yếu để giúp loại trừ tệ nạn a != b && a - b == 0.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn