2016-07-11 9 views
0

콘솔에 qDebug()을 직접 사용하고 간접적으로 QString::number()을 통해 출력하려고 시도했지만 모두 long double을 허용하지 않습니다.콘솔에 long double을 출력하십시오.

long double 부동 소수점 숫자를 Qt를 사용하여 콘솔에 인쇄하는 쉬운 방법이 없다는 것이 사실입니까? 왜?!

+0

'long double'은 더 이상 공간을 차지할 필요가 없으므로 '이중'이라고 생각했을 수 있습니다. – NathanOliver

+0

@ NathanOliver : 플랫폼에 따라 다릅니다. 16 비트 Windows는 'long double'에는 80 비트를 사용하고 'double'에는 64 비트를 사용합니다. 다른 예가 있으면 놀랄 일이 아닙니다. –

+1

사용할 수 있습니다. http://stackoverflow.com/questions/2326850/long-double-to-string – demonplus

답변

0

가장 중요한 이유는 없습니다. 적어도 Qt 5.6부터는 아무도 그것을 구현하기가 어려웠습니다. 그게 다야.

QDebug& operator<<(QDebug& d, long double f) 
{ 
    return d << static_cast<double>(f); 
} 

이것은 물론, 당신에게 여분의 정밀도를 표시하지 않습니다,하지만 당신이 필요로 할 수있다 :

2

당신은 operator<<()의 자신의 과부하를 제공 할 수 있습니다.

그러나 향후 버전의 Qt가 이러한 기능을 구현하여 사용자를 1 정의 규칙에 위배 될 수 있음에 유의하십시오. 이를 피하려면 충돌하는 정의를 제공하지 않는 것으로 확인한 정확한 Qt 버전 (또는 버전 범위)에 대한 적절한 #if 테스트를 통해이를 지켜야합니다. 또한 contributing your implementation to Qt을 고려하십시오.