gpt4 book ai didi

objective-c - iPhone - 舍入 float 不起作用

转载 作者:行者123 更新时间:2023-12-03 17:36:06 24 4
gpt4 key购买 nike

我无法实现对 float 的舍入。

这些调用都返回 3.5999999,而不是 theoTimeoutTrick 和 theoTimeout 的 3.6。
我怎样才能将 3.6 值放入 NSString 和 float vars 中?

#define minTimeout 1.0
#define defaultNbRetry 5

float secondsWaitedForAnswer = 20.0;
float minDelayBetween2Retry = 0.5;

int theoNbRetries = defaultNbRetry;
float theoTimeout = 0.0;

while (theoTimeout < minTimeout && theoNbRetries > 0) {
theoTimeout = (secondsWaitedForAnswer - (theoNbRetries-1)*minDelayBetween2Retry) / theoNbRetries;
theoNbRetries--;
}

float theoTimeoutTrick = [[NSString stringWithFormat:@"%.1f", theoTimeout] floatValue];
theoTimeout = roundf(theoTimeout * 10)/10.0;

最佳答案

来自Rounding numbers in Objective-C :

float roundedValue = round(2.0f * number) / 2.0f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
[formatter setRoundingMode: NSNumberFormatterRoundDown];

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

这会给你一个圆形的字符串。我确信你可以将它解析回 float 。

好的,这是一些测试代码和一些结果:

NSLog(@"%f", round(10*3.56)/10.0);
=>3.600000
NSLog(@"%f", round(10*3.54)/10.0);
=>3.500000
NSLog(@"%f", round(10*3.14)/10.0);
=>3.100000

好吧,你知道吗?您的原始代码在我的机器、OSX 10.6 和 Xcode 4 上按预期工作。您看到的输出到底如何?

关于objective-c - iPhone - 舍入 float 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6810626/

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