c# - puede - Dividir la variable decimal en partes integrales y fraccionadas
multiplicar textbox c# (5)
Estoy tratando de extraer las partes integrales y fraccionarias de un valor decimal (ambas partes deben ser enteros):
decimal decimalValue = 12.34m;
int integral = (int) decimal.Truncate(decimalValue);
int fraction = (int) ((decimalValue - decimal.Truncate(decimalValue)) * 100);
(Para mi propósito, las variables decimales contendrán hasta 2 decimales)
¿Hay mejores maneras de lograr esto?
Intenta la definición matemática:
var fraction = (int)(100.0m * (decimalValue - Math.Floor(decimalValue)));
Aunque no es mejor en sentido de rendimiento, al menos funciona para números negativos.
Para sacar fracciones puedes usar esta solución :
Math.ceil(((f < 1.0) ? f : (f % Math.floor(f))) * 10000)
Qué tal si:
int fraction = (int) ((decimalValue - integral) * 100);
decimal fraction = doubleNumber - Math.Floor(doubleNumber)
o algo así.
decimal fraction = (decimal)2.78;
int iPart = (int)fraction;
decimal dPart = fraction % 1.0m;