     
     // MARK: - Private
     
-    private var commonUnitString: String {
-        return cryptoAmount.string(as: currency.defaultUnit, formatter: rawTokenFormat) ?? ""
-    }
-    
     private var commonUnitValue: Decimal? {
-        return Decimal(string: commonUnitString)
+        let commonUnitString = cryptoAmount.string(as: currency.defaultUnit, formatter: rawTokenFormat) ?? ""
+        return Decimal(string: commonUnitString, locale: Locale.current)
     }
 }
 

        format.numberStyle = .currency
        format.generatesDecimalNumbers = true
        format.negativeFormat = "-\(format.positiveFormat!)"
        
        if let rate = rate {
            format.currencySymbol = rate.currencySymbol
            format.maximumFractionDigits = rate.maxFractionalDigits

    /// Token value in default units as Decimal number
    /// NB: Decimal can only represent maximum 38 digits wheras UInt256 can represent up to 78 digits -- it is assumed the units represented will be multiple orders of magnitude smaller than the base unit value and precision loss is acceptable.
    var tokenValue: Decimal {
        return Decimal(string: tokenUnformattedString(in: currency.defaultUnit), locale: Locale.current) ?? Decimal.zero
    }
    
    /// Token value in default units as formatted string with currency ticker symbol suffix
