C/C++ 中的 80 位浮点运算

问题描述 投票:0回答:3

假设 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 位浮点运算?

c precision
3个回答
4
投票

您可能不应该使用浮点来取整数的平方根,尤其是

long double
,它的支持很差,并且在某些系统上可能有近似(不准确)
sqrtl
。相反,查找整数平方根算法。


2
投票

您确定 sqrt() 对于长双精度数有效吗?

至少在某些环境中 sqrt() 用于双精度数,sqrtf() 用于浮点数,sqrtl() 用于长双精度数。


1
投票

Embarcadero 的 C++Builder 将处理 80 位浮点。使用 long double 类型,或(从 Delphi 导入)Extnded 类型。他们是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.