이 문자열을 정확한 숫자 표현으로 변환하는 방법이 필요합니다. 나는 꽤 많은 것들을 시도했고, 내가 아는 바로는 이것이 작동해야한다 (유명한 마지막 단어). 라이브러리를 설치하지 않으려 고 노력하고 있으며 변환 할 숫자가 많습니다.문자열 십진수를 변환 할 때의 정밀도
나는 이진수로 긴 십진수를 표현하는 것이 어렵다는 것을 알고 있지만 해결책이 필요하다.
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string data = "138.6470184568";
cout << atof(data.c_str()) << endl;
return 0;
}
출력
138.647
를 제공? GCC를 사용하고 있습니까? 라이브러리가 필요없는 Decimal 지원 기능이 내장되어있는 것 같습니다. http://stackoverflow.com/questions/14096026/c-decimal-data-types#comment19516201_14096071 – TessellatingHeckler
값을 정확하게 바이너리로 저장하거나하지 않을 수 있습니다. 십진수로 길이에 의존하지만 이력 분수로 나타낼 수 있는지 없는지. 예를 들어 0.1은 매우 짧지 만 바이너리에서는 정확하게 표현할 수 없지만 0.000244140625는 –
일 수 있으며 **는 atoy와 atof를 사용하지 않습니다. 안전하지 않아. 대신에 오류 검사를 제공하기 때문에 ['strtod'] (http://en.cppreference.com/w/cpp/string/byte/strtof)를 사용하십시오. –