Convert String to Int C++

#include < iostream >
#include < cmath >
using namespace std;
int convert(string s)
{
    int x=0, n=s.size();
    for(int i=0; i<n; i++) 
    x+=((s[i]-48) * pow(10, n-1-i));
    return x;
}
int main()
{
    string x; cin >> x;
    cout << convert(x);
    return 0;
}

Mọi người giải đáp giúp em/mình với! Tại sao khi độ dài xâu là chẵn thì kết quả đúng, là lẻ thì lại sai.

Chính là do sử dụng hàm pow. Nó còn có liên quan đến lỗi của compiler.

1 Like

anh nói rõ hơn được không ạ

Hàm pow là hàm số thực nên có thể ra .9999… làm tròn xuống thành zero.

Ngoài ra dùng Code::Blocks còn có thể gặp trình biên dịch bị lỗi nên tính không đúng. Bài này làm “tay to” thì đại loại là x := x * 10 + c :smiley:

1 Like
string s = "1234";
int i = atoi(s); // i = 1234
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?