Tengo el double valor como 12.256852651 y quiero mostrar como 12.257 como un flotador número sin convertirla en un tipo de cadena.

¿Cómo puedo hacerlo en C# ?

  • De matemáticas.Ronda(valor 3) msdn.microsoft.com/en-us/library/75ks3aby.aspx
  • ¿Qué significa para ti «y no como una cadena de formato»? Usted está formateando el número como una cadena para que se pueda ver, no?
  • Tal vez de ir a través de la red como un número (json, por ejemplo). Podría ser necesario se almacena como un número de cliente del lado además de ser convertido a una cadena de caracteres por pantalla en una interfaz de usuario. Sólo una suposición basada en similares casos de uso aquí.
InformationsquelleAutor Dharmesh | 2011-11-23

2 Comentarios

  1. 48

    Yo primero convertir a Decimal y, a continuación, utilizar Math.Round en el resultado. Esta conversión no es estrictamente necesario, pero siempre me siento un poco incómoda si me ronda a decimales, mientras que el uso de flotante binario puntos.

    Math.Round((Decimal)f, 3, MidpointRounding.AwayFromZero)

    Usted también debe mirar en la elección de MidpointRounding, ya que por defecto utiliza Banquero de la ronda, que no es lo que se utiliza para la escuela.

    • Recuerde, cuando el redondeo de un archivo binario (como opuesto a System.Decimal) tipo de punto flotante a un número de decimales mayores que 0, que normalmente el «punto medio» no es exactamente representable. Por ejemplo, el «punto medio» 12.2565 (el promedio de los vecinos 12.256 y 12.257) no es exactamente representable como un double desde su binario de expansión es infinita (periódico) (que es muy a menudo el caso). Así que hay una buena razón para tratar de convertir a decimal antes de que el redondeo si uno quiere «puntos medios», para ser en realidad de golpe. Con double a menudo hay un «agujero» en el punto medio debe haber sido.
  2. 10

    Si quieres mostrar, será una cadena y que es lo que usted necesita para su uso.

    Si quieres ronda en orden a utilizar más tarde en los cálculos, uso Math.Round((decimal)myDouble, 3).

    Si no vas a utilizar en el cálculo, pero que necesita pantalla, utilice double.ToString("F3").

Dejar respuesta

Please enter your comment!
Please enter your name here