美文网首页
Flutter关于币种的显示 2023-02-13 周一

Flutter关于币种的显示 2023-02-13 周一

作者: 勇往直前888 | 来源:发表于2023-02-27 14:15 被阅读0次

    问题

    金钱显示差异

    一开始,只有一个币种,人民币CNY,没有出现过这种问题。后来,增加美元USD,就出现这种前后端不一致的问题了。第一个界面的13.41是客户端计算的结果。第二界面的13.42是服务计算的结果,通过接口在客户端显示。

    原因分析和措施

    • 先计算还是先转化?
      一开始的做法是先转化币种,然后参与计算。这样毫无疑问会扩大误差。
      后来改成统一用人民币CNY计算,最后需要展示的时候再进行币种转化,使情况大为好转。

    • 汇率缓存?
      由于汇率转化存在于各个地方,所以APP一启动的时候就会调用汇率接口,并且把汇率结果缓存本地。在使用的地方,只要从缓存读数据就可以了。这样做减少了接口调用,提高了访问效率。
      当然,这样做的问题就是当汇率改变的时候,使用缓存数据,结果就不准确了。
      所以,后来,增加了汇率接口的调用。虽然用的时候仍然去缓存中拿,但是在进入一个页面的时候,一般都会加入汇率接口的调用,更新缓存,让缓存形同虚设。

    • 四舍五入?
      一般情况下是这样的,可是有的时候后台却可能采用截断,进一,甚至舍五进六等各种方式。
      经过几次修改之后,搞得APP端,前端,后台都很尴尬。

    • 插件
      问题是从APP端提出来的,后来才知道,前端和后台使用了同一个插件,所以没有爆问题出来。
      所以,APP端果断放弃数字处理游戏,也使用相同的插件,问题就暂时解决了(已经解决很多次了)。decimal

    更好的方式

    很显然,在多币种切换的场景之下,简单的一个amount字段来表示金钱就不够用了,扩展为以下4个字段的对象会好很多。币种,符号,数值,汇率等相关信息都全了。

    企业微信截图_e0b1e57e-a88f-42c3-8eea-0540af77b3dd.png

    这种方式要求基本上由服务端来承担计算任务,引入BFF模式将更好落地(轻客户端)。(客户端和服务端都想推脱,宁可在出现差异的时候找插件。屁股决定脑袋,符合人性)

    相关文章

      网友评论

          本文标题:Flutter关于币种的显示 2023-02-13 周一

          本文链接:https://www.haomeiwen.com/subject/efkdkdtx.html