Chuyên lập trình AmiBroker cho Giao dịch chứng khoán

Thứ 3, 01/07/2025

::

PM
Đầu tư chứng khoán khoa học trên nền tảng phân tích dữ liệu và thống kê
AlmostEqual - so sánh không nhạy với lỗi làm tròn
2023-05-22 17:06:00 1346 Lượt xem

    AlmostEqual - so sánh không nhạy với lỗi làm tròn

    CÚ PHÁP

    AlmostEqual( x, y, ulps = 5 )

    TRẢ VỀ

    SỐ
    MẢNG

    CHỨC NĂNG

    Đây là một hàm trợ giúp để so sánh các số dấu phẩy động. Hàm này trả về True nếu x và y bằng nhau hoặc gần bằng nhau với độ chính xác được xác định (ulps). Đề nghị sử dụng hàm này thay vì kiểm tra bằng (==) để có sự so sánh đáng tin cậy hơn và tránh các vấn đề về độ chính xác của dấu phẩy động theo tiêu chuẩn IEEE.
    Tham số:

    x, y - các số hoặc mảng được so sánh,
    ulps đại diện cho "đơn vị ở vị trí cuối cùng" và đại diện cho sai số tương đối tối đa của quá trình so sánh. Vì số dấu phẩy động IEEE 32 bit có độ chính xác là 7 chữ số có nghĩa, 1 đơn vị ở vị trí cuối cùng (ulp) đại diện cho sai số tương đối là 0,00001%. Giá trị mặc định của tham số ulps là 5, tương ứng với "độ nhạy so sánh" khoảng 0,00005%.
    Cảm ơn Bruce Dawson đã đóng góp phần thuật toán nhanh.

    VÍ DỤ

    if( 1/3 == 0.3333333 )
    {
      printf("Equality exact trong số dấu phẩy động IEEE 32 bit\n");
    }

    if( AlmostEqual( 1/3, 0.3333333 ) )
    {
      printf("Các số gần nhau\n");
    }

    Đọc thêm

    Thu gọn

    Bài viết khác:
    Zalo
    Hotline