【问题标题】:Round float values accurately with output required decimal point in Objective-C [closed]在Objective-C中使用输出所需的小数点准确地舍入浮点值[关闭]
【发布时间】:2013-04-25 14:06:37
【问题描述】:

如何准确地将float value1.449567 舍入。

输出值应该是要求的小数点浮点值

输出应该是这样的:

for 1 decimal point  **f=1.5**
for 2 decimal point  **f=1.45**
for 3 decimal point  **f=1.450**
for 4 decimal point  **f=1.4496**

【问题讨论】:

  • 根据我的数学知识,1.449 舍入到 1.4 而不是 1.5 如果舍入到小数点后一位...
  • 还有 1.450 和 1.4496。
  • 您没有说清楚的是您关心的是小数点后的位数,还是显示的总位数(在您的“for 3”行中,数字将是“ 4",不管浮动的大小)。
  • @H2CO3 你能告诉我你的答案的逻辑吗..根据我的数学知识 1.449 ,小数点后 2 位仅舍入到 1.45..
  • @GR。你没注意我的评论。 保留一位小数...

标签: objective-c floating-point numbers


【解决方案1】:

我建议考虑使用NSNumberFormatter

例子:

float roundedValue =1.45999f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
[formatter setRoundingMode: NSNumberFormatterRoundDown];

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]];

【讨论】:

  • 我会为您解答。我认为它对我有用.. 感谢您的帮助...
  • @Mr.Frank.. 它只对任何一侧进行舍入 NSNumberFormatterRoundDown 或 NSNumberFormatterRoundUp 。它如何有效地做到这一点...帮帮我..例如,小数点低于 4 意味着不需要四舍五入或小数点高于 5 意味着在前一个小数上加 1。我如何在不损失任何金额的情况下有效地做到这一点,因为我在这里四舍五入。
  • 最好使用formatter.roundingMode = NSNumberFormatterRoundHalfEven;
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多