gpt4 book ai didi

c++ - c++ 中 long double 中小数点后允许的最大位数

转载 作者:行者123 更新时间:2023-11-28 05:28:22 26 4
gpt4 key购买 nike

我解决了一个问题访问http://www.spoj.com/problems/CHI_ROOT/

(求一个数的n次方根并打印结果的前101位有效数字没有小数点、尾随零和前导零)使用 long double

sizeof(long double)=12;

因此分配给 long double 变量的总位数为 96 位 (12*8)。

变量可以存储的最大值约为 10^28。

我想知道变量在小数点后最多可以存储多少位数它是如何存储的?

最佳答案

可以查询the numeric_limits class template <cfloat> macros得到它能准确显示的点后有效小数位数:

#include <limits>
#include <iostream>

int main() {
std::cout << std::numeric_limits<float>::digits10 << std::endl;
std::cout << FLOAT_DIG << std::endl;
// 6
std::cout << std::numeric_limits<double>::digits10 << std::endl;
std::cout << DBL_DIG << std::endl;
// 15
std::cout << std::numeric_limits<long double>::digits10 << std::endl;
std::cout << LDBL_DIG << std::endl;
// 18
}

在 x86 上,一个 long double通常存储为 extended precision格式(只有 80 位,没有 96 位;由于对齐,sizeof 被填充为 12 字节)。

请注意,位数远小于 101。你应该找出一种算法来计算任意精度的 n 次方根。

关于c++ - c++ 中 long double 中小数点后允许的最大位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40055501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com