Hỏi về ký tự e khi nhập số thực

Số là trưa nay sau khi làm xong project, tui có ngồi test lại 1 tí, mọi thứ đều có vẻ ổn cho đến khi tui test tới phần nhập số thực, tui có viết lại 1 ví dụ như sau:

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char argv){
    double input=0;
    char enter=0;
    do{
        fflush(stdin);
        printf("Enter number: \n");
        if( scanf("%lf%c",&input,&enter)!=2 || enter!='\n' )
            printf("Wrong input\n");
        else
            printf("%lf\n",input);
    }while(1);
    return 0;
}

Khi tui nhập sai vào 2w, -rt, … nó đều báo Wrong input
Nhưng khi tui nhập một số và liền sau đó là e hoặc E thì lại đúng (WTF)
ví dụ nhập: 2e, 12313E342, 123e2… ( e nằm ở đầu vẫn báo lỗi) thì nó đều print ra được kết quả.
Mong mn khai não giúp tui e là cái chichi @@.

Đó là cách viết của số thực mà. E tương đương với 10^
Ví dụ:

12000000 = 12*10^6 = 12E6 hoặc 12e+6
1000000000000000000000000000 = 10^27 = 1E27 hoặc 1E+27
0.000001 = 10^-6 = 1E-6

Xem:


Phần: IEEE 754: chuẩn dấu phẩy động trong máy tính ngày nay > 1. Mô tả chung

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?