【问题标题】:How to express 64-bit integers in Swift?如何在 Swift 中表示 64 位整数?
【发布时间】:2020-08-10 04:37:35
【问题描述】:

我正在做一个需要在 Swfit 中生成 64 位正整数的练习,但我不知道如何实现。我的机器肯定是 64 位的,但我的测试代码甚至不能生成 63 位正整数。

使用Double 可能会解决问题,但这不是练习的目的。这个问题有什么解决办法吗?谢谢。

测试代码如下:

import Foundation

func numberOfGrainsOnChessBoard () {
    let ar = Array(1...64) 
    let arr = ar.map{twoMultipliedNTimes($0)}
    var index = 1
    for i in arr {
      print("\(index): \(i)")
      index = index + 1
    }
}
func twoMultipliedNTimes (_ times: Int) -> UInt64 {
    var product : UInt64 = 1;

    for _ in 1...times {
        product = product * 2
    }
    return product
}
addGrainsOnChessBoard()

以上代码出现溢出错误。

【问题讨论】:

  • 你没听说过UInt64
  • 我知道并在测试中使用过,但是溢出了。
  • UInt64 代表 2^64 个数字,但范围从 0(全零)到 2^64-1(全一),所以 2^64 - 当 times == 64 时循环的最后一次迭代- 溢出它
  • for _ in 1..<times {

标签: swift integer


【解决方案1】:

下面的代码将在最小值和最大值之间生成随机的 Int64 位整数。因此,您可以根据需要更改范围。

let myInt: Int64 = Int64.random(in: Int64.min...Int64.max)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 2014-12-20
    • 2013-05-30
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多