Swift 斯威夫特的四舍五入
我想把一个双精度整数四舍五入到一定数量的小数,总是四舍五入 示例 四舍五入到.00=>1.5679999到1.56 四舍五入到.000=>1.5679999到1.567Swift 斯威夫特的四舍五入,swift,Swift,我想把一个双精度整数四舍五入到一定数量的小数,总是四舍五入 示例 四舍五入到.00=>1.5679999到1.56 四舍五入到.000=>1.5679999到1.567 round(1.5679999 * 100) / 100 //returns 1.57 round(1.5679999 * 1000) / 1000 //returns 1.568 我想要一个双精度而不是串联字符串只要用地板替换圆形 自swift 3.0起: myDouble.rounded(.down) SWIFT4+ 对
round(1.5679999 * 100) / 100 //returns 1.57
round(1.5679999 * 1000) / 1000 //returns 1.568
我想要一个双精度而不是串联字符串只要用
地板
替换圆形
自swift 3.0起:
myDouble.rounded(.down)
SWIFT4+ 对不同案件进行调查的方法
var w = 6.5
w.round(.toNearestOrAwayFromZero)
// w == 7.0
// Equivalent to the C 'trunc' function:
var x = 6.5
x.round(.towardZero)
// x == 6.0
// Equivalent to the C 'ceil' function:
var y = 6.5
y.round(.up)
// y == 7.0
// Equivalent to the C 'floor' function:
var z = 6.5
z.round(.down)
// z == 6.0
为了什么?如果要向用户显示,则应使用
NSNumberFormatter
。您不应该依赖任意浮点精度来格式化字符串。因为NSNumberFormatter
不会更改基础值,只需向用户显示字符串即可#IfeelikeMosontheMountaintalkingtoyou。所描述的行为是意外的,除了直接输入数字的情况,在这种情况下,最好将每个键入的字符表示为单独的标记,并在操作时解析为一个数字。对于浮点数,由于舍入误差,不能保证用同一个数乘和除得到完全相同的结果。(例如:floor(1.5679999*1000)/1000
==1.566999999999999)和FWIW,您确实可以从NSNumberFormatter
中以数字形式获取显示的字符串。因此我重新编码了您的方式。它干净多了。非常感谢<代码>楼层(1.5679999*1000)/1000==1.5669999999999
。你不能通过对浮点进行除法和乘法来可靠地改变它的精度。当然,谢谢你指出这一点!PS——我爱你,马特!:)我一直想知道你最近在忙什么。感谢您多年来为iOS社区做出的巨大贡献。有时候,事情可能很简单!谢谢