double
값을 UNIX에서 sprintf()
을 사용하여 문자열로 변환하는 중 하나의 특정 문제가 있습니다.sprintf double 값 서식 지정
double a = 0.009984354523452;
double b = 0.01;
변환하는 동안, 내가 사용하고 :
sprintf(somestringvar, "Double value : %.15f \n", a);
sprintf(diffstringvar, "Double value : %.15f \n", b);
문자열로 변환 할
예를 들어나는 두 개의 값을 가지고있다.
내 문제는 'a'이고, 값이 제대로 인쇄되고 있지만 'b'값의 경우 꼬리 끝에 0이 추가됩니다. 'a'와 'b'를 정확한 값으로 표시하는 일반적인 방법을 제공해주십시오.
나는 이런 종류의 일에 std :: ostringstream을 사용할 것이다. – Robinson
그리고 일반적으로'sprintf()'는 버퍼 오버런을 일으킬 수 있으므로 사용하지 마십시오. 대신에'snprintf()'를 사용하거나 Microsoft에서 제공하는'_s' "안전한"버전 중 하나를 사용하십시오. 추신. 스택 오버플로에 오신 것을 환영합니다! –
안녕하세요, 조속한 답변에 감사드립니다. ostringstream 전체 정밀도를 복용하지 않습니다. 값은 0.009976으로 만 인쇄됩니다. snprintf()를 사용할 수는 있지만 값을 올바르게 인쇄하는 동안 문제가 발생합니다. – sandy