问题描述
:智能合约的结构体中使用浮点类型的数据时,存在一个问题,向账本插入数据所调用指令的参数类型为字符串类型,假如浮点数类型参数的小数点后面全为0的情况下,比如1200.0
,存入账本的值则为1200
,而不是1200.0
。
数据结构如下所示:
问题复现:
从感性方面来看,值都是1200
。但从计算机的理性方面看,从区块链取的数据和MySQL数据库作校验时,区块链返回的结果是1200
,而从MySQL数据库查到的是1200.0
,校验时就比较棘手。在Java项目应用中就比较头疼,如下所示:
想到两种解决办法:
- 对区块链返回的数据作处理,解析Json数据并将没有小数点的数据增加一个小数点和0,这种比较麻烦;
- 将float的数据类型改为String类型。
采用的是第二种解决方案
外部应用测试如下图:
欢迎小伙伴讨论,如果还有其他方法请在评论区评论或发私聊消息,谢谢你。