(1)我遇到过几种将epsilon添加到非负变量以保证非零值的情况。所以我想知道为什么不添加数据类型可以代表的最小值而不是epsilon?这两个可以解决的区别问题是什么?
(2)我还注意到, double 类型的最大值的倒数大于其最小值,而其最小值的倒数是inf,远大于其最大值。计算最大值和最小值的倒数是否有用?
(3)对于很小的 double 正数,要计算其倒数,当倒数开始没有意义时,它的大小是多少?设定互惠上限是否更好?界限是多少?
感谢致敬
最佳答案
您需要了解如何在CPU中表示浮点数。在数据类型中,为符号保留1位,即无论它是正数还是负数(是的,您可以在浮点数中使用正负0,),然后为有效数保留若干位(或尾数),这些是浮点数的有效数字,最后为指数保留了一些位数。现在浮点数的值为:
-1 ^符号*有效位数* 2 ^指数
有关一些背景信息,请参见IEEE754和Machine epsilon上的这些维基百科页面。
关于c++ - 机器精度以及 double 类型的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185953/