添加非常小且非常大的浮点数

时间:2017-10-01 16:41:13

标签: c++ c++11

我在视觉工作室(2017年)发现了一些东西,希望得到一些帮助。

我有一个非常小的第二个(纳秒,1.0e-9)的表示,但是也已经过了大秒(> 3e10)的大型表示,但是当将这两个数字加在一起时,纳秒消失或错误。

例如:

double nanosecond = 1.0e-9;
double seconds_in_year = 31536000.0;
double result = seconds_in_year + nanosecond;

我得到的结果是seconds_in_year,没有1.0e-9。如果我将纳秒变为~5.0e-9,我得到31536000.000000004,这是一个纳秒。

似乎我可以将非常小的数字加在一起(纳米+纳米)或大数字,但是当试图将两者结合起来时,它就会出错。关于如何解决这个问题的任何建议?我使用的是c ++ 11,不能使用像boost这样的外部库。

编辑: 我得到了一些评论和标志说它是重复的,但据我所知,没有任何建议实际提供解决方案(除非我错过了)。我得到的计算机只能处理如此多的精度位数或数字

所以重新解释一下我的问题:我如何在C ++中对非常小和非常大的数字进行适当的算术运算。创建一个类/对象?

0 个答案:

没有答案