2011-03-23 6 views

Respuesta

2

Respuesta corta, no. long double y double tienen la misma representación en visual studio. Para x86, el tamaño de ambos es de 64 bits, que no es suficiente para mantener el rango completo de un entero de 64 bits.

Usted necesita GMP

1

No coma flotante de precisión cuádruple (doble largo), pero no estoy seguro de que es lo suficientemente precisa. Es posible que desee utilizar una biblioteca de precisión arbitraria, como GMP o MPFR

2

Ver
http://en.wikipedia.org/wiki/Long_double
http://en.wikipedia.org/wiki/Extended_precision

En resumen, hay un 10-byte de tipo "precisión extendida" con el apoyo de todas las CPU x86 (en realidad FPU, más adelante CPU siempre usarlo para representaciones internas), que comúnmente es al que se hace referencia como "doble largo". Pero debido a que no hay soporte para este tipo en SSE, los compiladores modernos dificultan el acceso; se puede convertir en un alias para "doble" dependiendo de las opciones del compilador (como/Qlong-double,/Qpc80 en IntelC) e incluso CPU objetivo

Aún así, incluso si es realmente imposible habilitarlo en VS modernos, escribir una clase contenedora simple con implementaciones de una línea de asm puede seguir siendo una opción.

Cuestiones relacionadas