C++ 如何将一个双点数正规化为一个整数?

C++ 如何将一个双点数正规化为一个整数?,c++,C++,我有一个客户端程序,通过tcp连接将数据发送到服务器。 在客户端,我需要发送一个标准化的十进制数到服务器进行标准化,我将十进制数乘以100000,然后发送到服务器,但我在服务器中得到了错误的数字。 比如说 double price; 我将它从Gui设置为74.40 cout<<price; ---> 74.40 cout这是由于浮点精度错误造成的。您可以添加一些舍入: int tmp = (price + 0.5/Normal)*Normal; 在将数字转换为整数时,需要

我有一个客户端程序,通过tcp连接将数据发送到服务器。 在客户端,我需要发送一个标准化的十进制数到服务器进行标准化,我将十进制数乘以100000,然后发送到服务器,但我在服务器中得到了错误的数字。 比如说

double price;
我将它从Gui设置为74.40

cout<<price; ---> 74.40

cout这是由于浮点精度错误造成的。您可以添加一些舍入:

int tmp = (price + 0.5/Normal)*Normal;

在将数字转换为整数时,需要对其进行四舍五入,因为浮点无法准确表示十进制数字

int tmp = price*Normal + 0.5;

不要将任何内容存储为浮点值。改为使用有理数,或使用定点值。浮点值(如
double
)基本上是“欺骗”的,目的是将大量可能的值固定到一个合理的内存块中,它们必须做出妥协


如果你在存储一个经济价值,考虑存储硬币或美分或最小的面额。

见,你应该看看@ SBI,你应该看看。“你应该看看这个”与“点击这里”的类别相同。@ MalksOM:我知道这个推理,但我不同意这种情况。首先,每一个值得下载的浏览器在你点击它们之前都会显示这些链接。第二,我不认为必须细致地遵守UX标准来快速、一次性地评论程序员在某个Web资源上的位置。(我是否应该再次准备一份新闻稿,我将尝试考虑所有这些规则。)谢谢,但是,我如何才能推动
固定点值
我应该构建新对象?@herzlshemuelian:这有点超出了简单回答的范围,不过互联网确实有很多建议。这里有两个问题,其中有一些有用的链接,可以为您指明一个有用的方向。但是这些值实际上应该代表什么呢?我需要像乘法器这样的数学函数,并将其从字符串扫描并以字符串或标准化数字(int)的形式打印到流中。@herzlshemuelian:我很感激,但这些值实际上代表什么呢?比如说,它们是财务方面的吗?这些链接有用吗?
int tmp = price*Normal + 0.5;