【问题标题】:How to round off Float values? [duplicate]如何四舍五入浮点值? [复制]
【发布时间】:2011-04-08 10:59:39
【问题描述】:

可能重复:
Rounding numbers in Objective-C

在 Objective-c 中如何对浮点值进行四舍五入?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    除了其他答案:

    float theFloat = 1.23456;
    int rounded = roundf(theFloat); NSLog(@"%d",rounded);
    int roundedUp = ceil(theFloat); NSLog(@"%d",roundedUp);
    int roundedDown = floor(theFloat); NSLog(@"%d",roundedDown);
    // Note: int can be replaced by float
    

    对于特定小数的四舍五入,请参阅 Alex Kazaev 提到的问题。

    【讨论】:

    • 您应该使用roundf 而不是lroundf 在没有警告的情况下转换为int。由于编辑的最小字符更改限制,我无法编辑您的帖子。
    【解决方案2】:

    函数lroundf()会做到这一点:

    float a=20.49;
    int myInt = lroundf(a);
    

    【讨论】:

    • 如果a的值大于20.5怎么办?
    • 没有。 lroundf(a) 给你,如果值是 20.75,那么它变成 21,如果值是 20.45,那么它变成 20... 意味着超过 20.5,那么它将变成 21,否则 20。:)
    【解决方案3】:

    转换为int,然后再转换回float。

    CGFloat *myFloat = 100.765;
    NSInteger *myInteger = myFloat;
    CGFloat *newFloat = myInteger;
    

    这会起作用

    【讨论】:

    • 这是截断(地板/天花板)而不是四舍五入。
    猜你喜欢
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多