如果您查看下面的代码,您可以看到我正在运行if语句来检查文本字段是否为空,如果它是空的则运行while循环。我的问题是,当我比较两个变量时,Q和Qc我只想测试循环到某个小数位,例如十分之一。
我尝试使用@“%。1f”和变量,但我猜我的语法错了。如果有人可以帮助我,我会很感激。
if ([heightTextField.text isEqualToString:@""]) {
while (Q != Qc) {
Hc = Hc + 0.01;
Qc = 1.486*(Hc*W)*(powf(((Hc*W)/(2*Hc+2*W)), 0.6666666667))*(powf(S, 0.50))/n;
H = Hc;
}
}
if ([widthTextField.text isEqualToString:@""]) {
while (Q != Qc) {
Wc = Wc + 0.01;
Qc = 1.486*(H*Wc)*(powf(((H*Wc)/(2*H+2*Wc)), 0.6666666667))*(powf(S, 0.50))/n;
W = Wc;
}
}
谢谢, 德纳
答案 0 :(得分:1)
这是一个想法: 如果要比较小数点后的一位数,请先将该数字乘以10.然后,您可以选择使用roundf,floor,ceil或其他操作来对数字进行整形。完成后,您可以再次除以10并进行比较。
答案 1 :(得分:0)
可能有一种更简单的方法可以解决这个问题,但是,这将是我采取的方法。
首先,这可能不适用于您,但我在将textField与@“”(它永远不会说这是真的)进行比较时遇到了问题,所以我之后使用了if ([myTextField.text length])
。
至于比较,这是我将使用的代码:
NSString *qString = [NSString stringWithFormat:@"%.1f", Q];
NSString *qcString = [NSString stringWithFormat:@"%.1f", Qc];
while (![qString isEqualToString:qcString]) {
// continue code to update Qc...;
// update qcString;
qcString = [NSString stringWithFormat:@"%.1f", Qc];
}
答案 2 :(得分:0)
要测试大于0.1的差异,请使用:
while (fabs(Q - Qc) > .1) {
...
}