我们有一个TCP/IP 套接字软件,包括一个Java 客户端和C++ 服务器。跨套接字的数据包含数字、int、float和char 数组。这些浮点数的精度是该点之后的四位数字。最近,由于精度原因,我们开始使用char 数组来表示数据结构/协议中的浮点数或int来表示浮点数(float to int by time 10000,然后在接收端除以 10000)。
有人告诉我,如果我们直接在数据结构/协议中使用浮点数,很难保持精度。发送方很难准确地将浮点数放入套接字中,接收方很难接收/转换回准确的浮点数。
我不相信。通过再次阅读维基。似乎单精度浮点数可以提供 6-9 精度:
这给出了 6 到 9 位有效小数位的精度(如果将具有最多 6 个有效小数位的十进制字符串转换为 IEEE 754 单精度,然后转换回相同的有效小数位数,则最终字符串应与原始字符串匹配;和如果将 IEEE 754 单精度转换为具有至少 9 位有效小数的十进制字符串,然后再转换回单精度,则最终数字必须与原始数字匹配 [3])。
如果所需的精度是 4 或 6,那么通过 Internet 传输浮点数的良好做法是什么?还有更多呢?双倍的!?。银行如何处理更大的浮点数?