Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 二进制运算符'<';无法应用于类型为';双倍?';和';双倍';_Ios_Swift_Binary_Double_Operators - Fatal编程技术网

Ios 二进制运算符'<';无法应用于类型为';双倍?';和';双倍';

Ios 二进制运算符'<';无法应用于类型为';双倍?';和';双倍';,ios,swift,binary,double,operators,Ios,Swift,Binary,Double,Operators,我是Swift的新手,在这方面我已经找到了一些答案,但我正试图找出如何纠正这个问题。我有一个Swift游乐场,其中的代码运行良好,不会返回此错误,但在iOS项目中有类似的代码,会返回此错误。它发生在我将纤维计数值与5.5进行比较时 我能看到的这两种情况之间的唯一区别是游乐场代码没有使用来自文本字段的用户输入,我将文本转换为双精度文本。我输入了一个纤维计数值,一切都正常 然而,在iOS项目中,我收到了上面的错误消息,不知道如何修复它,最重要的是,为什么我在一个代码集中有错误,而在另一个代码集中没有

我是Swift的新手,在这方面我已经找到了一些答案,但我正试图找出如何纠正这个问题。我有一个Swift游乐场,其中的代码运行良好,不会返回此错误,但在iOS项目中有类似的代码,会返回此错误。它发生在我将纤维计数值与5.5进行比较时

我能看到的这两种情况之间的唯一区别是游乐场代码没有使用来自文本字段的用户输入,我将文本转换为双精度文本。我输入了一个纤维计数值,一切都正常

然而,在iOS项目中,我收到了上面的错误消息,不知道如何修复它,最重要的是,为什么我在一个代码集中有错误,而在另一个代码集中没有。看来我要么让它在两种情况下都起作用,要么根本不起作用。提前谢谢

此代码运行正常:

var ECA: Double
var FibersCounted: Double
var FieldsCounted: Double
var FieldArea: Double
var SampleVolume: Double
var ResultNumerator: Double
var ResultDenominator: Double
var SampleResult: Double
var SampleLimitofDetection: Double

ECA = 385
FibersCounted = 65
FieldsCounted = 100
FieldArea = 0.00785
SampleVolume = 1200

if FibersCounted <= 5.5 {
    ResultNumerator = (ECA * (5.5 / 100))
    ResultDenominator = (FieldArea * SampleVolume * 1000)
    SampleResult = ResultNumerator / ResultDenominator
    } else {
    ResultNumerator = (ECA * (FibersCounted / FieldsCounted))
    ResultDenominator = (FieldArea * SampleVolume * 1000)
    SampleResult = ResultNumerator / ResultDenominator
}
var-ECA:Double
var光纤计数:双
var FieldsCounted:双
var字段区域:双
var样本量:双
var结果计数器:双精度
var结果除颤器:双
var采样结果:双精度
var样本检测限值:双精度
ECA=385
纤维计数=65
现场勘查=100
FieldArea=0.00785
样本体积=1200
如果文件中的纤维计数返回可选类型。所以你需要在比较之前打开它。

如果让fiberscompted=fiberscompted,fiberscompted<5.5{}否则{}
应该适用于您

请检查值是否可用

if let count = fieldsCounted{
 if count < 5.5 {
        resultNumerator = (385 * (5.5 / 100))
        resultDenominator = (7.85 * sampleVolume!)
        let sampleResult = resultNumerator / resultDenominator
 }else{ 
        resultNumerator = (385 * (fibersCounted! / fieldsCounted!))
        resultDenominator = (7.85 * sampleVolume!)
        let sampleResult = resultNumerator / resultDenominator
 }
}
如果let count=fields{
如果计数小于5.5{
结果计数器=(385*(5.5/100))
resultDenominator=(7.85*样本体积!)
让sampleResult=resultNumerator/resultDenominator
}否则{
结果计数器=(385*(fibersCounted!/fieldsCounted!))
resultDenominator=(7.85*样本体积!)
让sampleResult=resultNumerator/resultDenominator
}
}

谢谢

如果
Double.init?(\uu:String)
失败,最好的方法是返回
Double.nan
。正如@LeoDabus所提到的,使用
.nan
是正确的快捷方式,也是首选

let a = Double("1.122") ?? .nan
let b = Double("a.123") ?? .nan
let c = 1.123

a < c // true
b < c // false
a > c // false
b > c // false

您的代码将更具可读性,并且不再需要强制展开双精度值,因为您在下一次计算中做了大量工作,这在实际使用场景中可能非常危险。

我对swift也有点陌生,但从外观上看,您正在将可选双精度值与双精度值进行比较。如果让fiberscompted=fiberscompted{使用要执行的代码},请尝试
以打开其中的值

大家好,非常感谢你们花时间阅读并回复建议。我会看看每个答案,然后看看什么是有效的。我会回来告诉你们的。再次感谢您的帮助!好的-所以我可以用“如果让…”来让它工作。再次感谢大家的帮助。我还将致力于改进包装/展开语法。谢谢你对这一切的建议。
let a = Double("1.122") ?? .nan
let b = Double("a.123") ?? .nan
let c = 1.123

a < c // true
b < c // false
a > c // false
b > c // false
b == b