【问题标题】:Round floating value to .1 (tens place) [duplicate]将浮点值舍入到 .1(十位)[重复]
【发布时间】:2013-01-10 16:55:45
【问题描述】:

可能重复:
How can I round a float value to 2 post decimal positions?

假设我有一个双倍数 3.46。 如何将其舍入到 3.50? 我试过了

NSLog(@"res: %.f", round(3.46)); 

但它返回 3。

【问题讨论】:

  • 它与另一个问题 [相当] 不一样,尽管另一个问题将有助于完成部分任务。在此特定示例中,数字应四舍五入为 3.5(小数点后 1 位),然后在后操作中显示最后一个 0(例如 %0.2f 或其他任何内容) - 请记住,前导/尾随零实际上不是值(即 3.5 == 3.50)。

标签: ios objective-c floating-point rounding


【解决方案1】:

做一些计算……

float f=3.46;
float num=f+0.05;//3.51
int intNum=num*10;//35
float floatNum=intNum/10.0;//3.5

NSLog(@"res: %.2f", floatNum); //3.50

【讨论】:

    【解决方案2】:

    以下代码可能会有所帮助

    i = roundf(10 * i) / 10.0;
    

    其中 i 是您的浮点变量

    【讨论】:

    • 即使进行了更改,它仍然不完整 - 使用原始帖子中的格式输出将是 "3.5"
    • 编辑了答案请检查..
    【解决方案3】:

    如果您愿意接受rounding rules from printf,那么在四舍五入进行演示时,以下内容就足够了

    NSLog(@"res: %.1f0", 3.46); 
    

    请注意,0 只是添加在 之后的普通字符,该值被格式化为适当的小数位数 (1)。这种方法应该也适用于[NSString stringWithFormat:]

    原始代码的结果是“3”,因为round 总是返回一个整数值。

    YMMV;我什至不使用 iOS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多