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该怎么做?,在开发文档上有这样一个表,是按照保留小数点后一位处理的。

时间: 2024-10-25 14:20:49

ios 里如何处理四舍五入的问题的相关文章

IOS里Request的斗争(上)

基本想好了怎么写,并且也在这一周开始抽出时间兑现之前的预告. 首先,如果我们打进ASIHTTPRequest和NSURLConnection在baidu里面,大家可以立刻发现到CSDN gnicky的文章,这位前辈介绍了关于为什么我们需要选择ASIHTTPRequest而不是NSURLConnection.这位前辈其实把Stackoverflow里面的文章摘出来了一下(其实就第一段,后面两段,我已经不知道前辈的目的为何了),我们来看一下原文:Why should I prefer ASIHTTP

转载的一篇关于iOS里多线程NSThread/NSOperation/GCD的文章

转载 IOS多线程编程对于初学者来说,总是会觉得很难理解和掌握,现在通过几个实例来更加系统全面的理解IOS多线程编程,希望对大家有所帮助. 1:首先简单介绍什么叫线程可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位.共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K).并发执行进度不可控,对非原子操作易造成状态不一致,加锁控制又有死锁的风险. 2:IOS中的线程iOS主线程(UI线程),我们的大部分业务逻辑代码运行于主线程中.没有特殊需求,不应引入线程增加程序复杂

IOS开发之----四舍五入问题

http://blog.sina.com.cn/s/blog_71715bf801017nyw.html 方法一: -(NSString *)notRounding:(float)price afterPoint:(int)position{ NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:positi

java里的四舍五入(保留两位小数,返回double类型)

1.最简单的操作,验证之后是准确的四舍五入 double payPercent=123.345; System.out.println((double)Math.round(payPercent*100)/100); 输出结果:123.35 2.使用BigDecimal 1. ROUND_UP:远离零方向舍入.向绝对值最大的方向舍入,只要舍弃位非0即进位.(备注:就是只要第三位不是0,都往前进1.如1.121,输出会是1.13) double payPercent=123.343: BigDec

iOS里常见的几种信息加密方法简单总结

一.MD5加密 MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码. MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的). MD5算法还具有以下性质: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别. 4.弱抗碰撞:已知原数据和其MD5值,想找到一个

iOS里防止按钮被多次点击的办法

原理:利用局部变量生存期局限在当前函数或者当前代码块的原理,实现C++里AutoLock的概念,其实也就是智能指针的概念. 利用局部变量在创建时执行按钮的setEnable为NO,在函数结束,且无block的情况下setEnable为YES.如果有block,需要调下blockIt函数,其实里面啥都不干,就是为了让LLVM知道这个变量要在block结束后才释放. 头文件 @interface D1AutoDisableButton : NSObject { UIButton* sender; }

iOS float小数四舍五入

http://blog.csdn.net/fanjunxi1990/article/details/21536189 直接贴代码了 [python] view plaincopy #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"----%@-

浅谈iOS里面的KVO模式

本文转自:http://blog.csdn.net/yuquan0821/article/details/6646400/ 一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. 二,使用方法 系统框架已经支持KVO,所以程序员在使用的时候非常简单. 1. 注册,指定被观察者的属性, 2. 实现回调方法 3. 移除观察 三,实例: 假设一个

ios 里如何判断当前应用的定位服务是否可用

if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)) { //定位功能可用,开始定位 _locationManger = [