【问题标题】:Round number using NSNumberFormatter without using strings使用 NSNumberFormatter 不使用字符串的整数
【发布时间】:2010-10-11 23:09:57
【问题描述】:

这看起来很简单,但我看不出 NSNumberFormatter 有一个奇怪的功能。我有一个数字,比如说 4.1。我想将它四舍五入到 5。我想如果我使用 NSNumberFormatter 并将 roundingMode 设置为 NSNumberFormatterRoundUp 我会得到想要的结果。但我现在似乎能够让我的号码四舍五入的唯一方法是 stringFromNumber 或 numberFromString。似乎很奇怪,我就是不能保留一个数字。

我知道我可以将字符串转换为数字,但这似乎是一种浪费。想知道是否有不同的方法(如果数字是 4.1,round() 不会四舍五入),或者是否有一种方法我错过了查看类 ref。

干杯

【问题讨论】:

  • o_o''.... 有什么理由要将 4.1 舍入到 5?只是好奇。你不希望数字超过 4.5 然后是第 5 轮?
  • 格式化程序始终用于将数据与字符串转换。可能有一个库函数可以做你想做的事,我会快速浏览一下,但现在你的标题要求一些不合理的东西。
  • @Pavan - 用于 UI 目的,如果它的 4.1 我需要 5 行,如果它的 3.9 我需要 4 行

标签: iphone objective-c rounding nsnumberformatter


【解决方案1】:

你可以使用标准的c函数ceil

CGFloat number = 4.1;
CGFloat roundedUp = ceil( number ); // Will be 5.0

【讨论】:

  • 确保 number 是一个浮点数而不是 NSNumber。否则使用[number floatValue]
  • 干杯,工作就像一个魅力。虽然因为我所有的数字都是 int 的,但一秒钟感到困惑,将一个改为双精度,这样它就可以正确计算
【解决方案2】:

您可以在Objective C 中使用本机C 函数。您所追求的是ceil()。如果你已经有一个NSNumber,你可以使用floatValue等对象方法来获得一个原生C float

float num = [ns_number floatValue];
num = ceil(num);

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    相关资源
    最近更新 更多