"1234.123456"
과 같은 문자열을 double
또는 float
으로 변환하는 방법을 알고 싶습니다. 3 자리 이상의 정밀도가 필요합니다 (예 : 점 앞에있는 자릿수에 관계없이 소수점 이하 3 자리).C++에서 문자열을 double 형으로 변환하는 방법은 무엇입니까?
0
A
답변
6
정확한 1234.123456 값은 보통의 기계 부동 소수점 형식으로 표현할 수 없습니다. 당신이 할 수있는 일은 정확도가 얼마나 많은 을 선택하고 사용하는 것입니다. (가장 현대적인 기계에서 double
이 16 자리의 정밀도를 가지고있다.하지만 여전히 16 자리 값이 정확하게 표현 가능한 것을 의미하지 않습니다.) 변환에 관해서는
, 당신은 어떤 유형을 변환 할 것이 무엇 :
std::istringstream s("1234.123456");
double d;
s >> d;
그리고 http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html를 참조하십시오. 기계 부동 소수점을 안전하게 사용하기 위해 알아야 할 기본 최소값을 에 설명합니다.
0
#include<stdlib.h>
int main()
{
double dnum = atof("1234.123456") ;
printf ("%f\n" , dnum) ;
return 0 ;
}
'총 6 자리로 확대/축소하려면 이중 사용하십시오.'O_o – Gir
예. ['std :: stof'] (http://en.cppreference.com/w/cpp/string/basic_string/stof) 또는 ['strtof'] (http://en.cppreference.com/w/cpp/) 문자열/바이트/strtof). –
내 컴파일러에서 알 수 있습니다. double d = 1234.123456 \t cout << d << endl; 출력 : 1234.12 – MiNdFrEaK