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

2023-05-01,,

//单元测试通过
/**
 *   四舍五入并保留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];

}

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

下载本文的Word格式文档,以方便收藏与打印。