gpt4 book ai didi

iOS Objective-C 如何获得 2 位小数四舍五入的浮点值?

转载 作者:IT王子 更新时间:2023-10-29 07:49:32 25 4
gpt4 key购买 nike

我有一个

float a = 1412.244019;

我需要将 a 四舍五入到最接近的第二位小数,例如 1412.24000000。我知道如果我想只显示两位小数,我会使用 %.2f,但事实并非如此。出于数学原因,我需要新的 a 作为 float 。

我尝试了几种在 stackoverflow 上找到的方法,但没有成功。我使用的更明显的一个,我在下面提到,但仍然没有运气使用它。你能看出为什么魔法没有发生吗?

PS:它有时确实能达到预期的效果,但并非总是如此,这让我开始思考......嗯......

提前致谢。

代码:

float a = 1412.244019;
NSLog(@"a is %f", a); //output a is 1412.244019
a = [[NSString stringWithFormat:@"%.2f", a] floatValue];
NSLog(@"a is %f", a); //output a is 1412.239990

编辑:

当我在上述手术后使用 float a 时,SEEMS 认为它是 1412.240000,尽管 NSLog 说的不同......很奇怪。但我得到了我想要的,所以感谢浪费时间无所事事:)

编辑 我很乐意选择你们所有人作为正确答案,但由于我只能选择一个,所以我选择了第一个带有额外解释的好答案(最后两个)。

最佳答案

你试过吗?

CGFloat val = 37.777779;

CGFloat rounded_down = floorf(val * 100) / 100; /* Result: 37.77 */
CGFloat nearest = floorf(val * 100 + 0.5) / 100; /* Result: 37.78 */
CGFloat rounded_up = ceilf(val * 100) / 100; /* Result: 37.78 */

来源:Rounding Number to 2 Decimal Places in C

补充:您只是无法控制计算机如何存储浮点值。

因此这些四舍五入的值可能不完全是“明显的”十进制值,但它们将非常非常接近,这是您将拥有的最大保证。

关于iOS Objective-C 如何获得 2 位小数四舍五入的浮点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com