Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm strtod() trong C/C++

Hàm strtod() chuyển chuỗi thành số thực double. Trả về số đã chuyển, hoặc 0 nếu thất bại. Khai báo trong <stdlib.h>.

Cú pháp

double strtod(const char *str, char **endptr);

Tham số:

  • str – Chuỗi cần chuyển
  • endptr – Con trỏ nhận địa chỉ ký tự đầu tiên không parse được (có thể NULL)

Ví dụ

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

int main() {
    char s[20] = "8.28 is a number";
    char *endptr;
    double result = strtod(s, &endptr);
    printf("So sau chuyen doi: %lf\n", result);
    printf("Ky tu dung lai: '%c'\n", *endptr);
    return 0;
}

Kết quả

So sau chuyen doi: 8.280000
Ky tu dung lai: ' '

Giải thích: Parse 8.28 thành double. Dừng tại khoảng trắng. endptr trỏ đến khoảng trắng đó.

Kiểm tra lỗi

double val = strtod(str, &endptr);
if (endptr == str) {
    // Khong parse duoc so nao
} else if (*endptr != '\0') {
    // Co ky tu thua sau so
} else {
    // Chuyen doi hoan toan thanh cong
}
Hàm liên quan: strtof() (-> float), strtold() (-> long double), strtol()/strtoul() (-> long/unsigned long). C++17: std::from_chars nhanh hơn, không locale, không exception.