Decimal values get remove when convert from String to Decimal in Swift

1.7k Views Asked by At

Please check this example

 let strValue = "12.00"
 let decimalValue = Decimal(string: strValue) // 12

it always returns 12 not 12.00 I also try with NSNumber, Float, and Double but it always remove zeros.

Can you please help me with this thanks in advance

2

There are 2 best solutions below

11
Helge Becker On BEST ANSWER

Like martin said. 12 and 12.00 is the same number. It doesn't mathematical matter how many 0 are behind the comma.

While a number stays the same, the representation is a different topic.

String(format: "%.6f", 12) will give 12.000000 as String.

Edit:
A Decimal is a Struct. The meaning of the numbers stays the same. Throw this in a playground.

import UIKit
let decimal = Decimal(12.0000000000)
let justAnInt = 12

let sameDecimal = decimal == Decimal(justAnInt)

See? There is no such thing as infinite 0 in math. Zero is finite. A Decimal from 12.000000 and a Decimal created from 12 are the same.

enter image description here

1
Lal Krishna On

There is no difference between 12 & 12.00. The only thing we need is to present the value to user., for that you could use formatted string.

Like:

String(format: "%.2f", floatValue)