迅速向下舍入

Mik*_*ika 17 swift

我想将Double加倍到一定数量的小数,总是四舍五入.

舍入到.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
Run Code Online (Sandbox Code Playgroud)

我想要一个Double而不是一个连接的字符串

Cla*_*fou 44

只需更换roundfloor!

  • `floor(1.5679999*1000)/ 1000 == 1.5669999999999999`.你不能将浮点除和乘以可靠地改变它的精度. (3认同)

PSc*_*tte 32

截至swift 3.0:

myDouble.rounded(.down)
Run Code Online (Sandbox Code Playgroud)

  • 有时可能是如此简单!谢谢。 (2认同)

Ham*_*ari 11

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
Run Code Online (Sandbox Code Playgroud)