首页 > 编程语言 > 详细

综合网上的各种不靠谱的算法,自己写的四舍五入方法

时间:2015-06-10 01:23:13      阅读:301      评论:0      收藏:0      [点我收藏+]
//单元测试通过
/**
 *   四舍五入并保留N位小数
 *
 *  @param number    数值字符串
 *  @param afterPoint 第几位小数
 *
 *  @return 处理后结果
 */
+(NSString *)halfUpDecimalNumber:(NSString *)number afterPoint:(int)position
{
    /*
     Mode的枚举类型
     NSRoundPlain, // 四舍五入
     NSRoundDown, // 只舍不入
     NSRoundUp, // 不舍只入
     NSRoundBankers //
     */
    if ([number length]==0) {
        return @"";
    }

    NSDecimalNumber *ouncesDecimal = [NSDecimalNumber decimalNumberWithString:number];
    NSString *formatStr=@"0.";
    for (int i=0; i<position; i++) {
        formatStr=[formatStr stringByAppendingString:@"0"];
    }

    NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init];
    [doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle];
    [doubleValueWithMaxTwoDecimalPlaces setPaddingCharacter:@""];
    [doubleValueWithMaxTwoDecimalPlaces setPaddingPosition:NSNumberFormatterPadAfterSuffix];
    [doubleValueWithMaxTwoDecimalPlaces setFormatWidth:position];
    [doubleValueWithMaxTwoDecimalPlaces setPerMillSymbol:@""];
    [doubleValueWithMaxTwoDecimalPlaces setAlwaysShowsDecimalSeparator:YES];
    [doubleValueWithMaxTwoDecimalPlaces setGroupingSeparator:@""];
    [doubleValueWithMaxTwoDecimalPlaces setRoundingMode:NSNumberFormatterRoundHalfUp];
    [doubleValueWithMaxTwoDecimalPlaces setPositiveFormat:formatStr];
    return  [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:ouncesDecimal];

}


综合网上的各种不靠谱的算法,自己写的四舍五入方法

原文:http://38734603.blog.51cto.com/7240279/1660173

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!