Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 斯威夫特的四舍五入_Swift - Fatal编程技术网

Swift 斯威夫特的四舍五入

Swift 斯威夫特的四舍五入,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+ 对

我想把一个双精度整数四舍五入到一定数量的小数,总是四舍五入

示例

四舍五入到.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+

对不同案件进行调查的方法

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社区做出的巨大贡献。有时候,事情可能很简单!谢谢