当前位置: 首页 > 知识库问答 >
问题:

如何在Swift中四舍五入到小数点后两位?[副本]

阙新觉
2023-03-14

如果计算结果为164.98001,那么我希望答案显示为164.99。

编辑-我不认为这是一个重复的问题,因为我的问题涉及到四舍五入所有的数字。

@IBAction func buttoncalc(_ sender: Any) {
    total.isHidden = false
    let firstValue = Double(text1.text!)
    let secondValue = Double(text2.text!)
    let thirdValue = Double(text3.text!)
    let forthValue = Double(text4.text!)


    if firstValue != nil && secondValue != nil && thirdValue != nil && forthValue != nil {

    let outputvalue = Double(((firstValue! * secondValue!)/1000)*0.5)*(thirdValue! - forthValue!)
    total.text = "£ \(outputvalue)"

    } else {
    total.text = nil
    }
}

共有1个答案

公德明
2023-03-14

可以使用NumberFormatter将格式化的数字作为字符串获取。只需将小数位数限制为2,并将roundingmode设置为up

let formatter = NumberFormatter()
formatter.roundingMode = .up
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
let number = 164.98001
print(formatter.string(from: NSNumber(value: number)) ?? "") // 164.99

为了更好地改进逻辑,可以设置格式化程序NumberStyleLocale

formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_UK")
// £164.99

您的特定用法:

let string = formatter.string(from: NSNumber(value: outputvalue)) ?? ""
total.text = string
 类似资料:
  • 我如何四舍五入到两个小数位?

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543

  • 我需要把分钟换算成小时,四舍五入到小数点后两位。我还需要在小数点后显示最多两个数字。所以如果我有650分钟,那么小时应该是10.83。 但在这种情况下,如果我的分钟数是630小时,那就是10.5000000。但我只想要10.50(四舍五入后)。我如何做到这一点?

  • 获取以下数字集--> 当相加时,这些给出一个整数。

  • 问题内容: 我有以下JavaScript语法: 这四舍五入为整数。如何返回两位小数的结果? 问题答案: 注-如果3位数精度很重要,请参阅编辑4 toFixed将根据超过2个小数的值为您舍入或舍入。 编辑 -正如其他人所提到的,它将结果转换为字符串。为了避免这种情况: 编辑2- 正如注释中所提到的,此函数在某种程度上会失败,例如在1.005的情况下,它将返回1.00而不是1.01。如果准确性在这个程

  • 问题内容: 假设我有,我想将其转换为。如何在Python中完成此操作? 给与不。我是Python或一般编程的新手。 我不想将其打印为字符串,结果将被进一步使用。有关此问题的更多信息,请查看 Tim Wilson的Python编程技巧:贷款和付款计算器 。 问题答案: (或的结果)正确舍入为小数点后两位。数学上,这听起来像您想要的是天花板功能。Python模块中的一个名为: 地板和天花板功能通常分别