美文网首页android首页投稿(暂停使用,暂停投稿)Android知识
Android金额递增动画之长数据精度丢失问题

Android金额递增动画之长数据精度丢失问题

作者: Kndroid | 来源:发表于2017-06-27 14:36 被阅读798次

一、背景

一个金额变动的动画的需求

二、开发

其实这个动画相当简单,下面看下网上大部人做法:

没错,就是利用ValueAnimator.ofFloat或者setFloatValues这两个方法,设置起始和结束的值,然后在监听器里获取渐变值animatedValue,

给TextView不断的setText即可;这个动画过程,FrameWork层已经帮你处理好了,只要知道原理即可,我们来看下ofFloat做了什么:

用endValue值减去startValue值,算出它们之间的差值,然后乘以fraction这个系数,再加上startValue值,那么就得到当前动画的值了

下面给大家推荐这篇文章分析的很全面了:

http://javayhu.me/blog/2016/05/26/when-math-meets-android-animation-1/

一切都是这么顺利,不是吗! 然而问题来了:

后台取到这一串金额数据以上方法满足吗?

上面数据有9位,java中float类型能保证的数据精度完整的就只有6-7位,那么问题就来了,最终展示出来的数据竟然少了几块钱,测试同学不给过咋办?

获取后台数据,经过gson转化后,使用BigDecimal赋值,没问题,然后用BigDecimal.floatvalue()取值后,发现问题来了,数值不对啊!

知道float数据问题后,当然就想换成double类型咯,然而~~~,ValueAnimator.ofDouble() 根本没有?,咋办?

没关系,ValueAnimator还提供了一个ofObject()方法,自然是扩展的方法,其中有一个TypeEvaluator参数,一个接口,实现之。

这个就是我们依葫芦画瓢写出的Double方式

是不是很简单,O(∩_∩)O哈哈~

使用方法

最终调试,问题解决~

相关文章

  • Android金额递增动画之长数据精度丢失问题

    一、背景 一个金额变动的动画的需求 二、开发 其实这个动画相当简单,下面看下网上大部人做法: 没错,就是利用Val...

  • iOS - Json解析精度丢失处理(NSString, Dou

    开发中处理处理价格金额问题, 后台经常返回float类型, 打印或转成NSString都会有精度丢失问题, 因此使...

  • 精度丢失

    开发中处理处理价格金额问题, 后台经常返回float、double类型, 打印或转成NSString都会有精度丢失...

  • 小问题整理

    1.iOS11数字精度问题 /*! @brief 修正浮点型精度丢失 @param str 传入接口取到的数据 @...

  • 关于 IEEE754考察重点

    考察机器码格式,精度,表示数据范围,丢失的精度后表示的真值,可以表示的不丢失精度的范围。

  • AFNetworking使用Body传输json数据 和 jso

    一、关于josn解析价格相关的问题 1. json解析精度丢失 s: 3.0 Android : 3.0 I...

  • 精度丢失问题

    0.1 + 0.2 !== 0.30000000000000004产生的主要原因是 js通过64位的二进制数据存储...

  • 精度丢失问题

    背景 BFF Client 使用的 npm 包 request-promise-native 请求微服务接口返回 ...

  • 金额相关精度问题

    最近项目中遇到金额计算,CGFloat类型金额计算的过程中,让我吃了不少苦头,先来看下面几行代码: 示例代码 略去...

  • 支付金额精度问题

    1.问题:后台传的金额数是小数点后两位的字符串,app端拿到数据之后要用到该金额做简单算法(加减等),于是用dou...

网友评论

    本文标题:Android金额递增动画之长数据精度丢失问题

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