gpt4 book ai didi

cocoa - DBL_MAX & double 型的最大值

转载 作者:行者123 更新时间:2023-12-03 16:15:55 25 4
gpt4 key购买 nike

这一行:

NSLog(@"DBL_MAX: %f", DBL_MAX);

打印这个非常大的值:1797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668781715404589535143824642 343213268894641827684675467035375169860499105765512820762454900903893289440758685084551339423045832369032229481658085593321 2334827479

但是,当我像这样测试 double 值时:

double test = 9999999999999999.0;
NSLog(@"test: %f", test);

我得到了这个意想不到的结果:

测试:10000000000000000.000000

这似乎是产生预期结果的最大位数:

double test = 999999999999999.0;
NSLog(@"test: %f", test);

测试:999999999999999.000000

如何处理更高的正分数?

谢谢。

最佳答案

不幸的是,我无法直接回答这个问题,因为我不明白你所说的“如何处理更高的正分数?”是什么意思。

但是,我可以阐明 float 是什么和不是什么。

float 由以下部分组成:

  • 符号(加号或减号)
  • 指数
  • 一个值(称为“尾数”)。

这些通常使用巧妙的编码组合成 32、64、80 或 128 位。此外,还使用一些特殊编码来表示 +-无穷大、非数字 (NaN) 和 +-零。

由于尾​​数的位数有限,因此您的值只能有这个数量的有效位。一个非常小的 float 可以表示 10^-308 和大的 10^308 中的值。但是,任何数字只能有大约 16 位小数。

换句话来说,如果 DBL_MAX 与变量中存储的信息量不对应,则打印输出。例如,无法表示相同的数字,但末尾使用 ...7480 而不是 ...7479。

所以回到问题,为了告诉如何表达你的值(value)观,你必须描述你想要表达什么样的值(value)观。它们真的是分数吗(即一个整数除以另一个整数),在这种情况下,您可能需要使用两个整数来表示。如果您想表示非常大的值,您可能需要使用像 http://gmplib.org 这样的包。

关于cocoa - DBL_MAX & double 型的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5826816/

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