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

将双倍值(1.005)舍入为(1.01)[副本]

齐英耀
2023-03-14

swift中取整1.005的问题

1.005四舍五入到小数点后两位,结果是1.0,而不是1.01,如何求解?

for i in 1..<11 {
    let value = Double(i) + 0.005
    let roundedValue = round(value * 100) / 100.0
    print(value, roundedValue)
}

输出:

1.005  -> 1.0
2.005  -> 2.01
3.005  -> 3.01
4.005  -> 4.01
5.005  -> 5.01
6.005  -> 6.01
7.005  -> 7.01
8.005  -> 8.01
9.005  -> 9.01
10.005  -> 10.01

共有1个答案

阎卓
2023-03-14

只需使用NumberFormatter并将RoundingMode设置为Halfup:

extension Formatter {
    static let number: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.minimumFractionDigits = 2
        formatter.maximumFractionDigits = 2
        formatter.roundingMode = .halfUp
        return formatter
    }()
}
Formatter.number.string(for: 1.005)   // "1.01"
Formatter.number.string(for: 2.005)   // "1.01"
Formatter.number.string(for: 3.005)   // "1.01"
Formatter.number.string(for: 4.005)   // "1.01"
Formatter.number.string(for: 5.005)   // "1.01"
Formatter.number.string(for: 6.005)   // "1.01"
Formatter.number.string(for: 7.005)   // "1.01"
Formatter.number.string(for: 8.005)   // "1.01"
Formatter.number.string(for: 9.005)   // "1.01"
Formatter.number.string(for: 10.005)  // "1.01"
 类似资料:
  • 谁能告诉我如何在SWIFT中舍入一个双倍值到小数点位数的x位? 我有: 当我打印时,如何将其舍入到1.543?

  • 问题内容: 如何在Java中四舍五入到特定的倍数?在excel中,该函数可以轻松舍入到指定的倍数,如下所示: 所以将返回,如果和如果。 到目前为止,我发现的所有舍入函数都始终舍入到最接近的整数或指定的小数位数,但是我希望能够为每个变量更改倍数。有谁知道哪种功能最适合这种情况? 问题答案: 只需除以数字,四舍五入,然后乘以数字即可。

  • 检查了一些解决方案,但我没有得到预期的结果,这是我的代码; 谢了!

  • 除了重写当前进行字符串转换的方法外,还有什么好方法可以将其双精度/字符串表示形式四舍五入到小数点后3位?

  • 我正在尝试制作一个增长率计算器(),它将结果四舍五入到最近的整数并从那里重新计算,如下所示: 但到目前为止我还不能。 编辑我有点这样做: 虽然我不介意它总是向下取整,但我不喜欢它,因为必须成为一个变量并在整个程序中进行更改(为了进行下一次计算),我不希望发生这种情况。

  • 我有一个jUnit测试断言两个双重对象与以下: 这很好,然后我决定将其改为使用原语double,结果发现它已被弃用,除非还提供了delta。 所以我想知道的是,在这个assertEquals中使用双对象或原语类型有什么区别?为什么使用没有增量的对象是可以的,但是使用没有增量的原语是不可取的?Java是否在后台做了一些已经考虑了默认增量值的事情? 谢谢