美文网首页
怎么给后台传小数,不是字符串,后面没有多余的精度

怎么给后台传小数,不是字符串,后面没有多余的精度

作者: 小驴拉磨 | 来源:发表于2020-12-02 19:47 被阅读0次

收到产品经理的埋点需求如下:
关于文档中变量类型为小数的,需要按照文档,不要将变量改为字符串,保留小数点后两位,四舍五入,如传递值为整数,直接传递整数值即可,如值为99,直接传递99即可。
然后我就开整了:
我直接将后台获取来的数据转成fload直接传给接口,然后抓到的数据都是带精度的后面小数位都会有好多零。

image.png
后台就会收到这样的数据。因为我用float接收的数据,因为精度的问题后面补零。
在网上搜了好多文章都是让转成字符串传给后台,但是现在统计这块就必须传小数。
image.png
在尝试了很多办法后,找到这篇文章https://blog.csdn.net/liudan302698481/article/details/52168192
内容就是使用NSDecimalNumber,我按照文中方法尝试得到同样的结果
-(float)roundFloat:(float)price{
    NSString *temp = [NSString stringWithFormat:@"%.7f",price];
    NSDecimalNumber *numResult = [NSDecimalNumber decimalNumberWithString:temp];
    NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler
                                       decimalNumberHandlerWithRoundingMode:NSRoundBankers
                                       scale:2
                                       raiseOnExactness:NO
                                       raiseOnOverflow:NO
                                       raiseOnUnderflow:NO
                                       raiseOnDivideByZero:YES];
    return [[numResult decimalNumberByRoundingAccordingToBehavior:roundUp] floatValue];
}
image.png

没法办法继续研究,发现上面的办法后面floatValue有走了我的老路,于是想着能不能不转float直接传NSDecimalNumber。竟然成功了。
后台接到的数据如下:


image.png image.png

而且数据还会四舍五入,指定小数精度等等,这里就不做赘述了,想详细了解的朋友直接百度搜NSDecimalNumber,一大堆文章向你扑来。
最后给自己来一针鸡血,做技术不要怕错,不要说不行,要大胆的尝试,没有技术解决不了的问题,哈哈!!!


image.png

相关文章

网友评论

      本文标题:怎么给后台传小数,不是字符串,后面没有多余的精度

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