Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Mọi người cho mình hỏi lỗi này là như nào ạ

  1. #1
    Ngày gia nhập
    07 2018
    Bài viết
    7

    Mặc định Mọi người cho mình hỏi lỗi này là như nào ạ

    tại sao: 2.1 - 2 = 0.09999999999 vậy nhỉ????
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Capture.PNG
Lần xem:	1
Size:		2.4 KB
ID:		67177

    Code:
    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    using namespace std;
    
    double M[]={
    	0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5,
    };
    
    int size_arr;
    int i, j;
    float Value; 
    
    void pause(){
    	while(!kbhit());
    }
    
    void Refine(double Value, double Arr, double Arr_Max){
    	double X;
    	X = Value - Arr;
    	if(X > 0 && X < 0.3 || X == 0){
    		cout << "So du: " << X << "\tGia Tri Gan Nhat: ";
    		cout << Arr;
    	}
    	if(X >= 0.3 && X < 0.5){
    		cout << "So du: " << X << "\tGia Tri Gan Nhat: ";
    		cout << Arr + 0.5;
    	}
    	
    }
    
    int main(){
    	size_arr = sizeof(M)/sizeof(double);
    	while(1){
    		system("cls");
    		cout << "Import Value:\n";
    		cin >> Value;
    		for(i = 0; i < size_arr; i++){
    			Refine(Value, M[i], M[size_arr - 1]);
    		}
    		pause();
    	}
    	
    }
    - - - Nội dung đã được cập nhật ngày 19-03-2019 lúc 02:53 PM - - -

    À tiện mình hỏi luôn: mình nhập vào là 2.3 sao nó lại hiện ra Giá trị gần nhất là 2 chứ không phải là 2.5.

    - - - Nội dung đã được cập nhật ngày 19-03-2019 lúc 02:55 PM - - -

    nhưng mình nhập vào là 0.3 thì lại hiện Giá trị gần nhất là 0.5

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    543

    Vấn đề độ chính xác thôi.

    Xem thêm http://diendan.congdongcviet.com/threads/t396988::lieu-co-phai-compiler-bi-loi-so-sanh.cpp
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #3
    Ngày gia nhập
    07 2018
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Vấn đề độ chính xác thôi.

    Xem thêm http://diendan.congdongcviet.com/threads/t396988::lieu-co-phai-compiler-bi-loi-so-sanh.cpp
    vậy lỗi này là do sai số của chương trình ạ?

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    543

    Trích dẫn Nguyên bản được gửi bởi tkdlbhvn Xem bài viết
    vậy lỗi này là do sai số của chương trình ạ?
    Bạn có thể dùng phần mềm để tính xem 2.1 bằng bao nhiêu. Ví dụ https://www.exploringbinary.com/floating-point-converter/

    Cách dùng:

    1. Nhập số cần tính (2.1).
    2. Mục Precision, chọn Double.
    3. Mục Output format, chọn Normalized decimal scientific notation hoặc Normalized binary scientific notation, hoặc cả hai.
    4. Ấn nút Convert.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

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