swift中的四舍五入数字

swift中的四舍五入数字,swift,rounding,Swift,Rounding,在Swift中,我需要能够根据数值对数字进行四舍五入。如果一个数字是整数,后面只有“.0”,我需要把它转换成整数,如果这个数字在小数点后有大于2位的数字,我需要把它四舍五入到2位 例如: 1.369352 --> 1.37 7.75 --> 7.75 2.0 --> 2 roundnumber(1.3693434) //returns "1.37" roundnumber(7.75) //returns "7.75" roundnumber(

在Swift中,我需要能够根据数值对数字进行四舍五入。如果一个数字是整数,后面只有“.0”,我需要把它转换成整数,如果这个数字在小数点后有大于2位的数字,我需要把它四舍五入到2位

例如:

1.369352 --> 1.37
7.75     --> 7.75  
2.0      --> 2  
roundnumber(1.3693434) //returns "1.37"
roundnumber(7.75)     //returns "7.75"
roundnumber(2.0)      // returns "2"

我怎样才能检查我的数字并根据这些规则进行四舍五入呢?

像这样的事情应该是好的

func formatNumber (number: Double) -> String? {

    let formatter = NSNumberFormatter()
    formatter.maximumFractionDigits = 2

    let formattedNumberString = formatter.stringFromNumber(number)
    return formattedNumberString?.stringByReplacingOccurrencesOfString(".00", withString: "")

}

formatNumber(3.25) // 3.25
formatNumber(3.00) // 3
formatNumber(3.25678) // 3.26

此函数返回所需结果的字符串

func roundnumber(roundinput:Double) ->String{
var roundoutputint=0
var roundoutputfloat=0.0
if (roundinput - floor(roundinput) < 0.00001) { // 0.000001 can be changed depending on the level of precision you need
    //integer

    roundoutputint = Int(round(roundinput))
    return String(roundoutputint)
}
else {
    //not integer
    //roundoutputfloat=round(10 * roundinput) / 10
    return String(format:"%.2f",roundinput)
}
}

1.369352未四舍五入到1.36,而是四舍五入到1.37。你想要哪个?1.36或1.37?另外,您是否只想在小数点后2位显示它们?还是把它们也存储在小数点后2位非常重要?@Fogmeister是的,那是我的错,我只是在1.36后面输入随机数,没有考虑它。另外,我正在制作的应用程序是四舍五入秒,所以最好是小数点后两位。啊,好的:)你可能还是想更新你的问题。这是一个很好的例子,使用1.37:d可能是正确使用数字的重复。不过,您可能需要检查十进制分隔符,因为它可能并不总是一个句点。