我正在努力实现几个数字的建议。但我无法找到如何实现它的算法。
我正在开展销售应用程序,显示所选项目的总价格,并且将根据总价格提供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
所以基本上,建议的金额必须基于银行票据。上面的例子只是描述测试用例,它不能与上面完全相同。
任何人都可以指导我如何实现这样的功能吗?
谢谢!非常感谢任何帮助。
答案 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
用于将浮点数增加"一点点"。