iOS 字符串和浮點型相互轉(zhuǎn)換問題

  1. 浮點型轉(zhuǎn)字符串 金融遇到只保留小數(shù)位不進行四舍五入的時候

//浮點型轉(zhuǎn)字符串,不進行四舍五入 參數(shù):浮點型數(shù)值,保留的小數(shù)位數(shù)
+(NSString *)notRounding:(double)dValue 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:dValue];
roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];

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

}

2.字符串轉(zhuǎn)浮點型 floatValue,doubleValue 造成的實際偏差
解決辦法,下面兩個分類,nsdecimal對象
.h文件
//
// NSDecimalNumber+Addtion.h
// 有應用應用
//
// Created by xuliying on 15/10/15.
// Copyright (c) 2015年 xly. All rights reserved.
//

import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, type) {
Add,
subtract,
multiply,
divide
};
@interface NSDecimalNumber (Addtion)
+(NSDecimalNumber *)aDecimalNumberWithString:(NSString *)num1 type:(type)type anotherDecimalNumberWithString:(NSString *)num2;
+(NSComparisonResult)aDecimalNumberWithString:(NSString *)num1 compareAnotherDecimalNumberWithString:(NSString *)num2;

+(NSDecimalNumber *)aDecimalNumberWithNumber:(NSNumber *)num1 type:(type)type anotherDecimalNumberWithNumber:(NSNumber *)num2;
+(NSComparisonResult)aDecimalNumberWithNumber:(NSNumber *)num1 compareAnotherDecimalNumberWithNumber:(NSNumber *)num2;
@end

.m文件
//
// NSDecimalNumber+Addtion.m
// 有應用應用
//
// Created by xuliying on 15/10/15.
// Copyright (c) 2015年 xly. All rights reserved.
//

import "NSDecimalNumber+Addtion.h"

@implementation NSDecimalNumber (Addtion)
+(NSDecimalNumber *)aDecimalNumberWithString:(NSString *)num1 type:(type)type anotherDecimalNumberWithString:(NSString *)num2{
if (type == Add) {
return [[NSDecimalNumber decimalNumberWithString:num1] decimalNumberByAdding:[NSDecimalNumber decimalNumberWithString:num2]];
}else if (type == subtract){
return [[NSDecimalNumber decimalNumberWithString:num1] decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithString:num2]];
}else if (type == multiply){
return [[NSDecimalNumber decimalNumberWithString:num1] decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:num2]];
}else if (type == divide){
return [[NSDecimalNumber decimalNumberWithString:num1] decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithString:num2]];
}else{
return nil;
}

}
+(NSComparisonResult)aDecimalNumberWithString:(NSString *)num1 compareAnotherDecimalNumberWithString:(NSString *)num2{
return [[NSDecimalNumber decimalNumberWithString:num1] compare:[NSDecimalNumber decimalNumberWithString:num2]];
}

+(NSDecimalNumber *)aDecimalNumberWithNumber:(NSNumber *)num1 type:(type)type anotherDecimalNumberWithNumber:(NSNumber *)num2{
if (type == Add) {
return [[NSDecimalNumber decimalNumberWithDecimal:[num1 decimalValue]] decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:[num2 decimalValue]]];
}else if (type == subtract){
return [[NSDecimalNumber decimalNumberWithDecimal:[num1 decimalValue]] decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithDecimal:[num2 decimalValue]]];
}else if (type == multiply){
return [[NSDecimalNumber decimalNumberWithDecimal:[num1 decimalValue]] decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithDecimal:[num2 decimalValue]]];
}else if (type == divide){
return [[NSDecimalNumber decimalNumberWithDecimal:[num1 decimalValue]] decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithDecimal:[num2 decimalValue]]];
}else{
return nil;
}
}
+(NSComparisonResult)aDecimalNumberWithNumber:(NSNumber *)num1 compareAnotherDecimalNumberWithNumber:(NSNumber *)num2{
return [[NSDecimalNumber decimalNumberWithDecimal:[num1 decimalValue]] compare:[NSDecimalNumber decimalNumberWithDecimal:[num2 decimalValue]]];
}
@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容