【问题标题】:Simple calculation in Swift2Swift2 中的简单计算
【发布时间】:2016-06-23 06:52:14
【问题描述】:

只是在 swift2 中尝试我的第一次简单计算,但我似乎无法正确完成。 我有一个名为 ValueA 的 UITextField 输入 我想对该输入进行以下计算(我可以有小数) (((ValueA * ValueA)+3)*1.36) 结果必须返回一个最多两位小数的数字。 我尝试了以下方法:

let kw = 1.36
let three: Double = 3
var a: Double = NSString(string: ValueA.text!).doubleValue
var b: Double = NSString(string: ValueB.text!).doubleValue
var answer:Double = (((a * a) + three) * kw)
let answerFormatter = NSNumberFormatter()
answerFormatter.minimumFractionDigits = 2
answerFormatter.maximumFractionDigits = 2
let Ranswer = answerFormatter.stringFromNumber(answer)!
Result.text = Ranswer`

它有点工作,但有时我的模拟器会崩溃,有时它会给我正确的答案,但更多的小数为零,例如:45.23000000(而不是 45.23)

有人可以清理我的代码吗?答案需要回到文本字段中。请记住,我是 swift 的新手 :)

【问题讨论】:

  • 从模拟器崩溃中得到的堆栈跟踪是什么?可以发在这里吗?

标签: ios swift2


【解决方案1】:

你可以使用这样的东西

let kw = 1.36
let three: Double = 3
var a = Double(ValueA.text!)!
var b = Double(ValueB.text!)!
var answer = (((a * a) + three) * kw)


 let Ranswer = String(format:"%.2f", answer)
Result.text = Ranswer

你确定要a * a吗?而不是a * b。只是确保,因为你没有在任何地方使用 b

你也可以使用

let Ranswer = Double(round(100 * answer)/100)
Result.text = String(Ranswer)

信息来源:link

【讨论】:

  • 乘以除以 100 不是格式化浮点数的合适方法。使用一些格式说明符进行格式化。 :)
  • @Eiko 我支持你!我不是最初回答这个问题的人。但我把它包括在内是因为我非常喜欢提出这种方法的人的创造力(通过链接归功于他)我已经改变了答案,谢谢你指出!
  • 无法正常工作。构建失败。它应该是 a*a。我还没有编写使用 b 的代码,但是:)
  • 为什么构建会失败?分享错误?以及您尝试过的代码
【解决方案2】:

您假设始终在ValueAValueB 中输入一个有效数字。这是崩溃的一个可能来源。最好检查一下文本是否可以转换为数字。

试试这个(未测试):

let kw = 1.36
let three = 3.0

if let a = Double(ValueA.text!), b = Double(ValueB.text!) {
    let answer = (((a * a) + three) * kw)

    let answerFormatter = NSNumberFormatter()
    answerFormatter.minimumFractionDigits = 2
    answerFormatter.maximumFractionDigits = 2

    let Ranswer = answerFormatter.stringFromNumber(answer)!
    Result.text = Ranswer
} else {
    print("You must enter a number into ValueA and ValueB")
}

【讨论】:

  • 效果很好。我将 UITextfields 设置为显示数字键盘,这就是为什么我没有检查数字值的原因。印刷品去哪儿了?我在模拟器的任何地方都看不到它?无论如何在这个计算中使用逗号?例如 5,5 而不是 5.5?当我使用逗号时没有任何反应
  • 我认为Double 在将字符串转换为数字时使用您的语言环境的默认分隔符。如果要自定义,请使用 NSNumberFormatterprint 将转到调试控制台。按Cmd + Shift + Y打开它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
相关资源
最近更新 更多