1

I am having issues in limiting a Float number to two decimal places and also provide a comma separated result in Swift. I have tried the following codes :

var myNum = 99.999999
myNum = (myNum * 100).rounded() / 100
print(myNum)
//Result : 100.0, Required_Result : 99.99



let formatted = String(format: "myNum: %.2f", myNum)
//Result : 100.00, Required_Result : 99.99

For eg: 1234.99999 should give the result as 1,234.99

For comma separation and Truncating to two decimal places I used :

 let numberFormatter = NumberFormatter()
 numberFormatter.maximumFractionDigits = 2
 numberFormatter.numberStyle = NumberFormatter.Style.decimal
 let formattedNumber = numberFormatter.string(from: NSNumber(value: number))
 return formattedNumber!

The above code is giving the following result : Number: 9999.9984 Result : 1,000.0 Required result: 9,999.99

Samarth Kejriwal
  • 1,168
  • 2
  • 15
  • 30

3 Answers3

2

Use a NSNumberFormatterand configure its rounding mode accordingly:

    let formatter = NumberFormatter()
    formatter.maximumFractionDigits = 2
    formatter.roundingMode = .down
    let s = formatter.string(from: 99.99999)
    print(s as Any) //99.99
Uma Madhavi
  • 4,851
  • 5
  • 38
  • 73
1

Here is your solution you need to use NumberFormatter for this issue

var myNum = 9999.9998
myNum = (myNum * 100.0) / 100.0
print(myNum)

let currencyFormatter = NumberFormatter()
currencyFormatter.numberStyle = .decimal
currencyFormatter.maximumFractionDigits = 2
currencyFormatter.minimumFractionDigits = 2
currencyFormatter.roundingMode = .down
let s = currencyFormatter.string(from: NSNumber.init(value: myNum)) // NSNumber init with double
print(s ?? "0.0")
Chirag Shah
  • 3,034
  • 1
  • 30
  • 61
0

For better precision you can use Float80 from Swift standard library.

Use it like this and you will get 9,999.99 result:

let myNum = 9999.9998
let floaNumber = Float80(Int(myNum*100))
let result = Double(floaNumber/100.0)
print(result)

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal

let formattedNumber = numberFormatter.string(from: NSNumber(value: result))
print(formattedNumber!)
Mukesh
  • 2,792
  • 15
  • 32