Principales respuestas
Diferencias del operador / según VB.NET y C#

Pregunta
-
NO hay un mismo comportamiento para el operador / según VB.NET y C#.
Problemas en migración de código de VB.NET a C#En VB.NET
(35 / 2712 )* 100 = 1.2905604719764012
regCB = IIf(IsDBNull(valor), 0, valor) tRegCB = tRegCB + regCB calc = (regCB / regCargados) * 100 porCB = Math.Round(calc, 2) & "%"
En C#
(35 / 2712 ) = 0
regCB = Convert.IsDBNull(valor) ? 0 : Convert.ToInt32(valor); tRegCB = (tRegCB + regCB); calc = (regCB / regCargados) * 100; porCB = Math.Round(calc, 2) + "%";
miércoles, 25 de marzo de 2020 12:09
Respuestas
-
Deleted
- Propuesto como respuesta Óscar NavarroModerator miércoles, 25 de marzo de 2020 17:11
- Marcado como respuesta Miriam Pasion miércoles, 25 de marzo de 2020 18:22
miércoles, 25 de marzo de 2020 16:03
Todas las respuestas
-
hola
Es una buena practica definir los tipos de datos
Que valor tiene la variable tRegCB ? porque la sumas a regCB pero no se conoce previamente que tiene asignado
Tampoco de donde sale regCargados?
Intenta indicando que estas operando con tipos de datos decimales
int regCB = 35;
int regCargados = 2712;
decimal calc = (regCB / (decimal)regCargados) * 100;string porCB = Math.Round(calc, 2) + "%";
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP miércoles, 25 de marzo de 2020 13:32
miércoles, 25 de marzo de 2020 13:27 -
En VB.NET y C#
regCB y regCargardos son integer - int
cal es double
Jose: "El problema se da porque el compilador de C# determina que los operandos de la división son de tipo entero y por lo tanto decide que la operación será la "división entera". En contraste, si los operandos son declarados (solución #1) o convertidos (solución #2) al tipo de datos de punto flotante double entonces el compilador de C# decide que la operación será una división de punto flotante. Como debe haber adivinado, la división entera arroja enteros; la división de punto flotante arroja un valor de punto flotante."
double numero1 = 9; double numero2 = 2; double total = (numero1 / numero2);
int numero1 = 9; int numero2 = 2; double total = ((double)numero1 / (double)numero2);
- Editado Miriam Pasion miércoles, 25 de marzo de 2020 18:00
miércoles, 25 de marzo de 2020 15:29 -
Alguna librería "matemática" que facilite esos cálculos ?jueves, 26 de marzo de 2020 10:05