【发布时间】:2017-02-07 23:00:27
【问题描述】:
我是 Swift 新手。我在 Xcode 中使用 Swift 3.x。在努力从插座获取输入后,我终于设法解决了大部分错误,现在我遇到了有史以来最奇怪的事情。我怎么不能把两个整数相加??
目标:Monte Carlo 与 Swift/XCode 的集成。
伪代码:I = (interval) * (1/SampleSize) * Sum[f(x)] (from n=1 to n=SampleSize)
代码:
@IBOutlet weak var interval_a: NSNumber!
@IBOutlet weak var interval_b: NSNumber!
@IBOutlet weak var sample_size: NSNumber!
@IBAction func calcMCIntegration(_ sender: Any) {
let interval_a_int: Int = interval_a.intValue
let interval_b_int: Int = interval_b.intValue
let sample_size_int: Int = sample_size.intValue
var c: Int = 0
var mc_int: Double = 0.0
var rand_numb: Int = 0
var func_sum: Int = 0
c = interval_b_int - interval_a_int
for i in 1...sample_size_int {
rand_numb = arc4random_uniform(UInt32(c)) + UInt32(interval_a_int)
function_val = exp(rand_numb)
func_sum += function_val
}
mc_int = c*func_sum/sample_size
return mc_int
}
【问题讨论】:
-
请发布代码(一个独立的可重现示例),而不是屏幕截图。
-
您正在将
C转换为UInt32,然后尝试将其转换为常规整数。删除UInt32,它应该可以修复它,您不需要强制转换为int。还要确保rand_num被声明为var而不是let -
为什么您的三个
NSNumber属性设置为网点?为什么他们很弱? -
@rmaddy 为什么我不能在那里使用
NSNumber? -
我没有质疑
NSNumber的使用。我质疑为什么他们是出口和弱者。