文字列をIntに変換するとオプションの値が返されますが、DoubleをIntに変換してもオプションの値は返されません。何故ですか? double値が最大Int値よりも大きいかどうかをチェックしたいのですが、変換関数がオプションの値を返さないため、オプションのバインディングを使用してチェックすることができません。DoubleをIntに変換するのがSwiftのIntを返さないのはなぜですか?
var stringNumber: String = "555"
var intValue = Int(stringNumber) // returns optional(555)
var doubleNumber: Double = 555
var fromDoubleToInt = Int(doubleNumber) // returns 555
したがって、最大整数より大きい倍数を変換しようとすると、nilを返す代わりにクラッシュします。
var doubleNumber: Double = 55555555555555555555
var fromDoubleToInt = Int(doubleNumber) // Crashes here
私は二重の数が最大の整数値よりも大きいかどうかを確認する別の方法があることを知っているが、私はそれがこのように起こっている理由として興味があります。
私はダブルの一体的なバージョンがあることは疑いがありますので、それはだと推測するだろう、常にスウィフトの数値はあなたを介してジャンプするすべての他のフープに加えて、アンラップことは非常に不便だろう。スウィフト_do_クラッシュのオーバーフロー状態は一般的なので、このことも驚くべきことではありません。あなたが好きではない場合、あなたは確かにオプションを返す関数を書くことができます! – matt