如何用浮点运算制作一个好的计算器

时间:2018-03-14 15:20:26

标签: c++ floating-point

以下是我的计算器应该如何工作:

有一个JSON值我可以写第一个乘数 - 就像这样:

10^n

在计算器上我可以写第二个乘数 - 只有0个数字(10,100,...,10000000)。并且我的计算结果应该返回一个整数,因为我知道使用我的计算的人总是在第一个乘数的小数点后面写的数字少于在第二个乘数的计算上的v1=1.4; v2=100; v1=1.414; v2=100000; v1=1.1; v2=100; s。是的,我的计算结果非常奇怪。

以下是有效输入:

value1=1.4

当我这样做时会发生什么,例如value2=10000和{{1}}我得到13900.就浮动无法保存任何数字而言,它有时会存储不同的数字。对于1.4内部,它在我的机器上存储1.399999。我知道为什么,但你知道测试我的应用程序的QA工程师告诉我,我需要得到14000.你的计算不起作用。如何制作我的计算以便打印正确的数字?

P.S。当然我已经从上下文中删除了我的实际问题,但问题是我在文件中有一个浮点数,在我的程序中有一个10 ^ n的数字作为用户输入。如何获得正确的结果?

EDIT1:我不知道为什么浮动会这样。我知道为什么。我问如何解决问题,即使浮动工作方式。

EDIT2:我使用RapidJson读取JSON文件,该文件已经将错误的数字作为双精度数字返回。我不能使用提供更高精度浮点的库。

1 个答案:

答案 0 :(得分:0)

格式化显示时将结果舍入。双精度值对于大约15位有效数字是正确的,因此如果将结果舍入为12位有效数字,则不会让用户感到惊讶。