>  기사  >  백엔드 개발  >  C에서 지정된 소수 정밀도를 사용하여 부동 소수점을 문자열로 정확하게 변환하려면 어떻게 해야 합니까?

C에서 지정된 소수 정밀도를 사용하여 부동 소수점을 문자열로 정확하게 변환하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 06:20:30353검색

How Do You Precisely Convert Floats to Strings with Specified Decimal Precision in C  ?

지정된 소수 정밀도를 사용하여 부동소수점을 문자열로 정확하게 변환

C에서 부동 소수점 숫자를 특정 정밀도를 사용하여 문자열로 변환하고 소수점 이하 자릿수는 신중한 고려가 필요합니다. 이 가이드에서는 두 가지 일반적인 솔루션인 stringstream과 C 17의 to_chars 함수를 살펴봅니다.

Stringstream 사용

Stringstream은 C에서 문자열을 조작하기 위한 다목적 도구입니다. 부동 소수점을 지정된 정밀도의 문자열로 변환하려면 스트림 조작기를 적용할 수 있습니다.

<code class="cpp">#include <iomanip>
#include <sstream>

double pi = 3.14159265359;
std::stringstream stream;
stream << std::fixed << std::setprecision(2) << pi;
std::string s = stream.str();
  • std::fixed는 숫자가 소수점을 사용하여 고정 소수점 표기법으로 표시되고 지정되도록 보장합니다. 자릿수.
  • std::setprecision(2)는 표시할 소수 자릿수를 제어합니다.

to_chars 함수 사용(C 17 이상)

XML 또는 JSON에 데이터 쓰기와 같은 보다 기술적인 목적을 위해 C 17에 도입된 to_chars 함수는 간결한 솔루션을 제공합니다.

<code class="cpp">#include <array>
#include <charconv>

double pi = 3.14159265359;
std::array<char, 128> buffer;
auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data() + buffer.size(), pi,
                               std::chars_format::fixed, 2);
if (ec == std::errc{}) {
    std::string s(buffer.data(), ptr);
}
else {
    // Error handling
}</code>
  • std::to_chars 함수는 버퍼(std::array 형식), 숫자 및 형식 사양(이 경우 소수점 이하 2자리로 std::chars_format::fixed)을 사용합니다.
  • 변환이 성공하면, 결과 문자열은 버퍼에서 생성됩니다.

이러한 기술을 사용하면 소수 자릿수를 정밀하게 제어하여 C에서 부동 소수점을 문자열로 변환할 수 있으므로 데이터가 정확하고 명확하게 표현됩니다. 귀하의 요구 사항에 따라.

위 내용은 C에서 지정된 소수 정밀도를 사용하여 부동 소수점을 문자열로 정확하게 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.