从Swift(算法)中的十进制向上舍入

时间:2017-10-31 08:42:38

标签: ios swift

我正在努力实现几个数字的建议。但我无法找到如何实现它的算法。

我正在开展销售应用程序,显示所选项目的总价格,并且将根据总价格提供3个总金额建议。这3个总金额从所选项目的总价格中向上计算

因此,基本上用户可以选择其中一个建议的金额,仅用于更好的用户体验。

在我的国家有5种类型的钞票:

$1, $5, $10, $20, $50, $100

例如

Total Price: 307.40
First suggestion: 308.00
Second suggestion: 310.00
Third suggestion: 350.00

Total Price: 14.54
First suggestion: 15.00
Second suggestion: 20.00
Third suggestion: 50.00

Total Price: 131.82
First suggestion: 132.00
Second suggestion: 140.00
Third suggestion: 150.00

所以基本上,建议的金额必须基于银行票据。上面的例子只是描述测试用例,它不能与上面完全相同。

任何人都可以指导我如何实现这样的功能吗?

谢谢!非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

使用

将浮点数向上舍入为下一个整数值
let price = 307.40;
let integralPrice = price.rounded(.up)    // 308.00

可以完成5,10,50,...的下一个倍数 通过缩放,例如:

let multipleOfTen   = (price / 10).rounded(.up) * 10    // 310
let multipleOfFifty = (price / 50).rounded(.up) * 50    // 350

对于与给定价格不同的倍数 并且彼此不同:

let price = 109.0;
let integralPrice = price.nextUp.rounded(.up)   // 110
let multipleOfTen   = (integralPrice.nextUp / 10).rounded(.up) * 10   // 120
let multipleOfFifty = (multipleOfTen.nextUp / 50).rounded(.up) * 50   // 150

此处nextUp用于将浮点数增加"一点点"。