xjjiang 发表于 2019-5-16 16:34:54

ESP8266 连阿里云浮点数显示异常的原因,麻烦指教

硬件:ESP8266模块
软件:ESP8266_RTOS_SDK V3.1,使用SHT20读取温度,MQTT发送到阿里云服务器。float数据显示小数点后面位数特别多,有什么方式。
我试过*100后取整,再除100,还是这样。有什么方法可以解决,谢谢大家

mPiDDR 发表于 2019-5-16 18:17:03

你这头是无法解决的。 这是浮点数的问题,切确说是浮点数的精度不够。 精度不够,有些数是无法表达的。
可以换双精度double 试试

jackman 发表于 2019-5-16 18:40:59

四舍五入到你要的小数位数, 剩下的变为0.

su33691 发表于 2019-5-16 18:43:07

最好用128位。

xjjiang 发表于 2019-5-16 19:05:57

mPiDDR 发表于 2019-5-16 18:17
你这头是无法解决的。 这是浮点数的问题,切确说是浮点数的精度不够。 精度不够,有些数是无法表达的。
可 ...

double我也试过,现象一样。没招了

adongliu 发表于 2019-5-16 19:08:35

找一找有没有格式化显示数值

xjjiang 发表于 2019-5-16 19:08:58

jackman 发表于 2019-5-16 18:40
四舍五入到你要的小数位数, 剩下的变为0.

4舍5入小数位数是怎么弄的,行, 我先搞一下试试

yyts 发表于 2019-5-16 19:45:38

难道不是直接发字符串上去的吗

xjjiang 发表于 2019-5-16 19:54:54

yyts 发表于 2019-5-16 19:45
难道不是直接发字符串上去的吗

是了字符串,用json打包

569659492 发表于 2019-5-16 20:04:51

格式化字符串,可以选择保留几位小数 %.2f保留2位小数 ,用 sprintf

dukelec 发表于 2019-5-16 22:59:20

這不是 float 型數據自身問題,而是 APP 顯示沒處理好的問題。

yyts 发表于 2019-5-17 07:29:15

xjjiang 发表于 2019-5-16 19:54
是了字符串,用json打包

那你字符串本身是什么值呢?

span42 发表于 2019-5-17 11:04:28

很明显是自身打json包的问题。比较一下你自己发出来的json包是什么样的

zhd1021 发表于 2019-5-17 11:06:00

javascript显示浮点的问题,一般需要在平台处理。

fghfguytu 发表于 2019-5-17 11:07:42

显示要格式化

飞思卡驴 发表于 2019-5-17 11:29:05

变格式,我一直显示浮点没问题
页: [1]
查看完整版本: ESP8266 连阿里云浮点数显示异常的原因,麻烦指教