Eu tenho um NSDecimalNumber
da class SKProduct
do SKProduct
, e eu quero convertê-lo para o tipo decimal
C # para minimizar a perda de precisão. Existe uma maneira simples de fazer uma coisa dessas?
Eu acho que minhas duas escolhas são:
NSDecimalNumber
me dê uma string e depois faça a análise decimal
. Eu acho que a opção 1 é muito trabalhosa e provavelmente até frágil, então estou inclinado a escolher a opção 2. Mas isso também não parece o melhor que posso fazer. (Eu posso viver com o quão lento vai ser, porque isso acontece excepcionalmente raramente.
Só porque isso me tropeçou e me custou algum tempo, aqui estão alguns methods de extensão que eu agora uso para conversão entre NSDecimal
e decimal
. Isso foi bastante frustrante e estou surpreso que não há melhor maneira construída dentro
public static class NumberHelper { public static decimal ToDecimal(this NSDecimal number) { var stringRepresentation = new NSDecimalNumber (number).ToString (); return decimal.Parse(stringRepresentation, CultureInfo.InvariantCulture); } public static NSDecimal ToNSDecimal(this decimal number) { return new NSDecimalNumber(number.ToString(CultureInfo.InvariantCulture)).NSDecimalValue; } }
Representação de estruturas NSDecimal
e NSDecimalNumber
não são idênticas ao .NET System.Decimal
.
A conversão é sempre possível, mas não é fácil. Se o desempenho não for um problema enorme, será melhor usar a representação de string
para converter entre eles.