zoukankan      html  css  js  c++  java
  • ios 里如何处理四舍五入的问题

    http://blog.sina.com.cn/s/blog_a2774bb10101293j.html

    今天朋友问我一个问题,就是如何只舍不入。比如 float price = 0.126,怎么样才能得到0.12?

    当然,通过字符串截取的办法肯定也能达到相同的效果。但是就是这么一个简单的问题要通过一些判断和截取才能获得结果,总感觉有点笨拙。

    下面先给出该问题的解决办法:

    -(NSString *)notRounding:(float)price afterPoint:(int)position{

        NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];

        NSDecimalNumber *ouncesDecimal;

        NSDecimalNumber *roundedOunces;

        

        ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];

        roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];

        [ouncesDecimal release];

        return [NSString stringWithFormat:@"%@",roundedOunces];

    }

    介绍一下参数:

    price:需要处理的数字,

    position:保留小数点第几位,

    然后调用

        float s =0.126;

        NSString *sv = [self notRounding:s afterPoint:2];

        NSLog(@"sv = %@",sv);

    输出结果为:sv = 0.12

    接下来介绍NSDecimalNumberHandler初始化时的关键参数:decimalNumberHandlerWithRoundingMode:NSRoundDown,

    NSRoundDown代表的就是 只舍不入。

    scale的参数position代表保留小数点后几位。

    如果只入不舍怎么办,比如,float 0.162 想要得到0.17该怎么做?,在开发文档上有这样一个表,是按照保留小数点后一位处理的。

  • 相关阅读:
    告诉自己的十大忠告
    深度学习框架
    深度学习-Caffe编译测试的小总结
    深度学习-Windows平台下的Caffe编译教程
    C#中使用多款LevelDB.Net封装测试性能
    LevelDB初体验测试
    机器学习-分类器-Adaboost原理
    机器学习-分类器-级联分类器训练(Train CascadeClassifier )
    C# Directory.GetFiles()获取多个类型格式的文件
    部分Android或IOS手机拍照后照片被旋转的问题
  • 原文地址:https://www.cnblogs.com/xuejinhui/p/4528636.html
Copyright © 2011-2022 走看看