Valor absoluto en vb.net
-
21-09-2019 - |
Pregunta
¿Cómo se obtiene el valor absoluto de un número en vb.net?
¿Hay una función incorporada?Sé que puedo simplemente codificar una función yo mismo, pero primero quiero saber si ya existe una.Parece tan simple que probablemente podría hacerlo en tres líneas, así que me sorprendería si no hubiera una...
¡Gracias!
Solución
Matemáticas.Abs( val )
Otros consejos
A riesgo de ser rechazado, es posible que desee escribir su propio método de valor absoluto, dependiendo de para qué lo esté usando.El siguiente fragmento de código (lo siento, está en C#, pero se aplica el mismo principio):
short i = -32768;
int iAbs = Math.Abs(i);
felizmente se compilará, pero cuando se ejecute, la segunda línea lanzará una explicación de OverflowException con el útil mensaje "Negando el valor mínimo de un número de complemento TWOS no es válido". En este caso, debido a que yo es tipo corto, el compilador elige la sobrecarga de matemáticas. Este problema al hacer que IBAB sea un int.
Este fragmento:
short i = -32768;
int iAbs = Math.Abs((int)i);
se compilará y ejecutará sin excepción, pero es un poco complicado codificar de esta manera.En mi opinión, este es un error muy engañoso porque rara vez se encuentra en el mundo real (ya que solo hay un valor para cada tipo que generará esta excepción).Desafortunadamente, me encuentro con este error cada vez que uso Math.Abs para normalizar datos de audio (que generalmente es una matriz corta []), por lo que me he acostumbrado a escribir mi propio contenedor alrededor de Math.Abs que maneja todos los esto para mí y solo devuelve un doble:
public double AbsThatDoesntSuck(short value)
{
return Math.Abs((double)value);
}
con sobrecargas para cualquier otro tipo que necesite manejar.Entiendo por qué Math.Abs fue escrito para comportarse de esta manera, pero definitivamente puede morder el trasero de quienes no se dan cuenta.
Usar Matemáticas.Abs.
La función es Math.Abs