美文网首页iOS知识点
iOS 字符串和浮点型相互转换问题

iOS 字符串和浮点型相互转换问题

作者: 辛乐 | 来源:发表于2017-01-24 09:59 被阅读565次
  1. 浮点型转字符串 金融遇到只保留小数位不进行四舍五入的时候

//浮点型转字符串,不进行四舍五入 参数:浮点型数值,保留的小数位数
+(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.字符串转浮点型 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

相关文章

  • iOS 字符串与浮点型转换与精度问题

    iOS 字符串与浮点型转换与精度问题 一般字符串转浮点型 NSString *str1 = @"123.12";...

  • python方法、技巧摘录

    Python字符串、整数、和浮点型数相互转换 int(str)函数将符合整数的规定的字符串转换成int型的 flo...

  • iOS 字符串和浮点型相互转换问题

    浮点型转字符串 金融遇到只保留小数位不进行四舍五入的时候 //浮点型转字符串,不进行四舍五入 参数:浮点型数值...

  • 关于浮点型精度问题的一些理解

    这是一篇关于浮点型精度的文章,大致会从三个大的问题入手,去解析精度问题。 字符串转浮点型出现精度丢失 浮点型和浮点...

  • Day4—循环和分支

    1 数据类型的转换 数据类型转换即为int(整型)、float(浮点型)、bool(布尔型)、str(字符串型)等...

  • 2018-08-23 day4-循环和分支

    1.数据类型转换 自动转换 整型与浮点型数计算转换为浮点型 整型与bool型(0和1)计算转换为整型 强制转换 语...

  • Python字符串、整数、和浮点型数相互转换

    int(str)函数将符合整数的规定的字符串转换成int型的float(str)函数将符合浮点型的规定的字符串转换...

  • 基本数据类型转换

    boolean 类型不可以转换为其他的数据类型 整形 字符型 浮点型的数据在混合运算中相互转换,转换时遵循以下原则...

  • iOS网络解析接口数据精度丢失问题

    目前发现同一个接口:安卓和小程序那边解析展示数据都是没有问题的,应该还是iOS这边的浮点型转换解析问题,最好让后台...

  • Python 10

    不同数据类型的转换1 主要是和整数 整数、浮点数、布尔型、字符串 1)浮点数——>整数 ①取整 ②四舍五入 取整 ...

网友评论

    本文标题:iOS 字符串和浮点型相互转换问题

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