C / C ++中的80位浮点运算
假设a, b
是_int64
变量。 需要在高精度80位浮点中计算sqrt((long double)a)*sqrt((long double)b)
。
例。 (__int64)(sqrt((long double)a)*sqrt((long double)a) + 0.5) != a
在很多情况下应该是。
哪个win32 C / C ++编译器可以管理80位浮点运算?
您可能不应该使用浮点来获取整数的平方根,尤其是支持不良的long double
,并且在某些系统上可能具有近似(不准确) sqrtl
。 而是查找整数平方根算法。
你确定sqrt()对长双打有效吗?
至少在某些环境中,sqrt()用于双精度,sqrtf()用于浮点数,sqrtl()用于长双精度数。
Embarcadero的C ++ Builder将处理80位浮点。 使用long double类型,或者(从Delphi导入)Extnded类型。 他们是一样的。