나는, libquadmath를 사용하여 __float128을 printf를하기 위해 노력하고있어 예 : 다음과 같은 세 가지 constaints와정보를 잃지 않기 위해 __float128에 필요한 printf 정밀도는 무엇입니까?
quadmath_snprintf(s, sizeof(s), "%.30Qg", f);
:
출력은 다음과 생산 일치해야합니다
number = [ minus ] int [ frac ] [ exp ] decimal-point = %x2E ; . digit1-9 = %x31-39 ; 1-9 e = %x65/%x45 ; e E exp = e [ minus/plus ] 1*DIGIT frac = decimal-point 1*DIGIT int = zero/(digit1-9 *DIGIT) minus = %x2D ; - plus = %x2B ; + zero = %x30 ; 0
- 을
위의 프로덕션 "s"와 일치하는 문자열에 printfed 된 모든 입력 __float128 "i"를 제공 한 다음 "s"를 __floa로 다시 scanfed합니다 t128 "j"- "i"는 "j"와 비트 동일해야합니다. 즉, 정보를 잃어 버리지 않아야합니다. 적어도 일부 값에 대해서는 이것이 가능하지 않습니다 (NaN, Infinity). 그 값의 전체 목록은 무엇입니까?
위의 두 가지 기준을 충족하는 다른 문자열이 후보보다 짧아야합니다.
위의 (가능한 경우 1, 3 및 2)를 만족하는 quadmath_snprintf 형식 문자열이 있습니까? 그렇다면 무엇입니까?
위의 제작 과정에서 포인트 2를 만족시킬 정도로 정확하게 표현할 수없는 __float128의 값은 무엇입니까? (예 : Nan, +/- Infinity 등) __float128이이 값 중 하나를 보유하고 있는지 어떻게 알 수 있습니까?
__float128에서 정확하게 표현할 수없는 무한한 10 진수 집합이 있습니다. 34 자리 이상의 유효 자릿수 형식 지정자는 임의의 절대 숫자> = 1E5에 대해 임의의 숫자를 생성합니다. 당신의 접근 방식은 깊이 결점이 있으며 아마도 문제를 해결하기 위해 __float128이 필요하다고 생각함으로써 시작할 수 있습니다. –
__float128에서 정확하게 표현할 수없는 무한 수의 십진수가 있다는 사실은 중요하지 않습니다. 요점 2는 십진수 표현이 정확하고 읽기만하고 반올림 한 내용이 정확하다는 것을 요구합니다. 형식 지정자가 올바르지 않다고 인식하면 올바른 질문을 묻습니다. 내 "접근법"은 괜찮 았고 어떤 문제를 해결하려고하는지 전혀 알지 못합니다. –