Estou aqui no trampo e começou a dar um problema numa aplicação porque os valores que estavam sendo enviados ao Mainframe estavam diferente da aplicação…
Repliquei o mesmo problema em um teste…
E testei agora com o BigDecimal…ele tb perde esta casa decimal…
Estou aqui no trampo e começou a dar um problema numa aplicação porque os valores que estavam sendo enviados ao Mainframe estavam diferente da aplicação…
Repliquei o mesmo problema em um teste…
E testei agora com o BigDecimal…ele tb perde esta casa decimal…
Gostaria de saber o porquê desta perda decimal.
Obrigado…
[/quote]
Você ta passando tudo pra long, que não aceita casas decimais.
Acredito q da seguinte maneira funcionaria:
public class teste {
public static void main(String[] args) {
double numero = 128.2;
numero = numero * 1000;
long a = ((long)numero);
System.out.println(a);
}
}
Assim não perderia a casa decimal.
Desculpa se não fncionar, não deu pra eu testar, mas acho que não daria problema.
Utilizei de outra maneira o BigDecimal e funcionou.
[code]public class teste {
public static void main(String[] args) {
double valor = 128.1994;
BigDecimal numero = new BigDecimal(valor);
numero = numero.multiply(new BigDecimal(1000));
numero = numero.setScale(0, BigDecimal.ROUND_HALF_UP);
System.out.println(numero.longValue());
Cara um conselho, use sempre BigDecimal pra esse tipo de conta.
Você verá que 128.1 * 1000 não é 128100.
Segue abaixo exemplo.
import java.math.BigDecimal;
public class teste {
public static void main(String[] args) {
double numero = 128.1;
BigDecimal a = new BigDecimal(numero).multiply(new BigDecimal(1000));
System.out.println(a);
}
}