usar titledborder setborder codigo java double floating

titledborder - Convertir doble a flotante en Java



titledborder java (10)

Me enfrento a un problema relacionado con la conversión de double a float . En realidad, 23423424666767 un tipo flotante, 23423424666767 , en una base de datos, pero cuando obtenemos datos de la base de datos en el siguiente código, getInfoValueNumeric() , es de double tipo. El valor que obtenemos está en la forma 2.3423424666767E13 .

Entonces, ¿cómo obtenemos datos de formato float como 23423424666767 ?

2.3423424666767E13 to 23423424666767

public void setInfoValueNumeric(java.lang.Double value) { setValue(4, value); } @javax.persistence.Column(name = "InfoValueNumeric", precision = 53) public java.lang.Double getInfoValueNumeric() { return (java.lang.Double) getValue(4); }


Para responder a su consulta sobre "Cómo convertir 2.3423424666767E13 a 23423424666767"

Puede usar un formateador decimal para formatear números decimales.

double d = 2.3423424666767E13; DecimalFormat decimalFormat = new DecimalFormat("#"); System.out.println(decimalFormat.format(d));

Salida: 23423424666767


Convertir Double a Float

public static Float convertToFloat(Double doubleValue) { return doubleValue == null ? null : doubleValue.floatValue(); }

Convertir double a Float

public static Float convertToFloat(double doubleValue) { return (float) doubleValue; }


El problema es que su valor no puede almacenarse con precisión en un tipo de coma flotante de precisión simple. Prueba:

public class test{ public static void main(String[] args){ Float a = Float.valueOf("23423424666767"); System.out.printf("%f/n", a); //23423424135168,000000 System.out.println(a); //2.34234241E13 } }

Otra cosa es: no obtienes "2.3423424666767E13", es solo la representación visual del número almacenado en la memoria. "Cómo imprimir" y "lo que está en la memoria" son dos cosas distintas. El ejemplo anterior muestra cómo imprimir el número como flotante, lo que evita la notación científica que estaba obteniendo.


En primer lugar, el hecho de que el valor en la base de datos sea flotante no significa que también encaje en un float Java. Float es la abreviatura de coma flotante , y existen tipos de coma flotante de varias precisiones. Los tipos Java float y double son tipos de punto flotante de diferente precisión. En una base de datos, ambos se llaman FLOAT . Dado que el double tiene una precisión más alta que el float , probablemente sea una mejor idea no convertir su valor en un float , ya que podría perder precisión.

También puede usar BigDecimal , que representa un número de precisión arbitraria.


Esta es una buena manera de hacerlo:

`Double d = 0.5;` `float f = d.floatValue();`

Si tiene d como un tipo primitivo, simplemente agregue una línea:

double d = 0.5; `Double D = Double.valueOf(d);` `float f = D.floatValue();`


Float.parseFloat (String.valueOf (su_número)


La conversión de doble a flotante será una conversión de reducción. Del doc :

Una conversión primitiva estrecha puede perder información sobre la magnitud general de un valor numérico y también puede perder precisión y rango.

Una conversión primitiva estrecha de doble a flotante se rige por las reglas de redondeo IEEE 754 (§4.2.4). Esta conversión puede perder precisión, pero también perder rango, lo que resulta en un cero flotante de un doble distinto de cero y un infinito flotante de un doble finito. Un NaN doble se convierte en un NaN flotante y un infinito doble se convierte en el infinito flotante con el mismo signo.

Entonces no es una buena idea. Si aún lo quieres puedes hacerlo como:

double d = 3.0; float f = (float) d;


Le sugiero que recupere el valor almacenado en la base de datos como tipo BigDecimal:

BigDecimal number = new BigDecimal("2.3423424666767E13"); int myInt = number.intValue(); double myDouble = number.doubleValue(); // your purpose float myFloat = number.floatValue();

BigDecimal le proporciona muchas funcionalidades.


Solo lanza tu doble a un flotador.

double d = getInfoValueNumeric(); float f = (float)d;

Observe también que los tipos primitivos NO pueden almacenar un conjunto infinito de números:

float range: from 1.40129846432481707e-45 to 3.40282346638528860e+38 double range: from 1.7e–308 to 1.7e+308


Use dataType casting. Por ejemplo:

// converting from double to float: double someValue; // cast someValue to float! float newValue = (float)someValue;

¡Salud!

Nota:

Los enteros son números enteros, por ejemplo, 10, 400 o -5.

Los números de coma flotante (flotantes) tienen puntos decimales y lugares decimales, por ejemplo, 12.5 y 56.7786543.

Los dobles son un tipo específico de número de coma flotante que tiene mayor precisión que los números de coma flotante estándar (lo que significa que son precisos para un mayor número de decimales).