- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码片段,我不知道如何舍入双数。
double m = [tmpProduct.msrp doubleValue] ;
double d = [tmpProduct.discountPrice doubleValue];
double p = (d * 100 ) / m;
此处 tmpProduct.msrp 和 mpProduct.discountPrice 为 (NSDecimalNUmber *)
通过上面的操作我得到 p = 44.995757
我想将其转换为 (45%),我该怎么做?
这是我使用的,但这没有帮助。
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
[formatter stringFromNumber:[NSNumber numberWithDouble:p]]
最佳答案
您是否尝试过使用 NSDecimalNumber 提供的算术运算?
我自己没有尝试过,但您似乎通过在数字实例的双值上使用标准运算符(*、/、...)来绕过 NSDecimalNumber 的优点。
看看NSDecimalNumber: Performing Arithmetic
由于 Objective-C 不支持运算符重载,您必须使用以下方法:
- (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber
更新:
使用 NSDecimalNumber 除法:
NSDecimalNumber* operandOne = [NSDecimalNumber decimalNumberWithString:@"1234.5"];
NSDecimalNumber* operandTwo = [NSDecimalNumber decimalNumberWithString:@"2335"];
NSDecimalNumber* result = [operandOne decimalNumberByDividingBy:operandTwo];
NSLog(@"%@", [result descriptionWithLocale:[NSLocale currentLocale]]);
通过使用 descriptionWithLocale:
,您可以获得正确的 NSLocaleDecimalSeparator
更新2:
我忘记了四舍五入:
NSDecimalNumber 支持多种舍入模式。
阅读 decimalNumberByRoundingAccordingToBehavior:
的文档
关于iphone - NSNumberFormatter 和舍入百分比值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971573/
这个问题在这里已经有了答案: Inappropriate Expected declaration error (1 个回答) 关闭 7 年前。 我正在阅读我的 swift 书并边做边建。我在使用这
这是我的代码片段,我不知道如何舍入双数。 double m = [tmpProduct.msrp doubleValue] ; double d = [tmpProduct.discountPric
它看起来像是NSNumberFormatter 的 方法,用于设置自定义格式化程序。 setFormat: 在 iPhone 上不可用... 所以这......使我的应用程序崩溃: NSNumberF
我在 NSTableView 的单元格中使用了 NSNUmberFormatter。这个 NSNUmberFormatter 是从 IB 库中拖出来并放入 TableView 单元格中的。然后从检查器
我对 NSNumberFormatter 的使用感到完全困惑。这应该非常简单,但我无法让它工作。 我想设置一个 NSTextField 以允许输入带小数点或不带小数点的十进制数字。这是我认为可行的:
我想将 NSDecimalNumber 格式化为美元值(1.50 美元),但我遇到了崩溃。 这是我的方法: +(NSString*) formatPriceForUser:(NSDecimalNumb
以下代码无法正常工作: //[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; formatter.maximumFractionDig
我正在开发一个适用于 double 的计算器应用程序,然后当您按下等于时,操作是使用 double 完成的,然后切换到 NSNumberFormatter。我的问题是当用户想要在屏幕上的答案中添加(或
有人问过类似的问题,但我发现提供的解决方案不适用于最新的 iOS SDK,或者不完全适用于这种特殊情况。 我使用 NSNotification 调用一个方法,该方法在 UILabel 中使用分组符号格
我的应用程序中有一个价格字段。我使用了 NSNumberFormatter 并且我正在使用核心数据存储和检索值。它在模拟器上运行良好,但设备上没有显示任何内容。 我还显示了在模拟器上运行正常但在设备上
我的问题是我目前使用的是 NSNumberFormatter 和 NSNumberFormatterDecimalStyle。我使用它是因为我想让逗号将每三个数字的数字隔开,就像当我把它变成一个字符串
我将收到美国 5.00 美元、日本 5.00 日元、欧洲 5.00 欧元等。但我不想要那样。我想在每个地区都获得相同的东西:美国 5.00 美元,日本 5.00 美元,欧洲 5.00 美元。这是我尝试
我有一个字符串,其货币格式为本地货币。例如10000 丹麦克朗 将 (10.000,00)当转换为双倍值时,它只读为 10。我试过这个片段 NSString * locale ; if(loc
我的代码是: NSString *price = @"0.29000"; NSNumberFormatter *f = [[NSNumberFormatter alloc] init]; [f set
我正在制作一个包含多个文本字段的应用程序。我希望当用户在文本字段中输入数字时,编辑结束时自动添加百分比符号。现在,我知道如何做到这一点的唯一方法是将文本值转换为 float ,然后使用 NSNumbe
我已经设置了一个 NSNumberFormatter 如下: formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberSty
我需要格式化数字和货币符号,我使用以下代码。我面临的问题是该数字四舍五入为 34.80,这仅适用于某些货币,如果我在下面的代码中将货币代码更改为“INR”,结果显示的金额没有四舍五入。 NSDecim
处理整数、NSString 和 NSNumberFormatter 的最佳方法是什么? 我有一个带有 UITextField 的应用程序,用户可以在其中输入数字。通过 UITextField 中的每一
我正在尝试获取 NSNumberFormatter 来显示货币。我有两个 UILabels,两者都由相同的 NSNumberFormatter 格式化,但第一个被括号包围。这是我的代码: NS
我有一个奇怪的问题。它似乎只出现在测试者的 iPhone 5s 上。它可以在运行最新 iOS (8.3) 的 iPhone 5、6 和 6 plus 上正常运行。 这是代码 -(NSString *)
我是一名优秀的程序员,十分优秀!