我想将双倍(例如价值为1.90的价格)转换为无损失的整数!我正在制作一个处理钱的程序,我必须将它们作为双打输入,然后将它们转换为整数,以便我可以处理它们,例如当我有1.90欧元并且我想将它转换为美分它将显示为189美分而不是190美分!请帮帮我:)提前谢谢
答案 0 :(得分:5)
在JLS
中查看有关double和浮点数在java中的行为方式的详细信息好吧,你可以将值四舍五入到所需的精度。只要你在给定的format's precision范围内(对于浮动来说,双倍~7左右为~15位数),你就会得到很好的结果。
double fractValue = 1.90; // 1.8999999....
int val = (int)Math.round(fractValue*100);
尽管使用BigDecimal
更好。那么你永远不会失去任何精确度。
答案 1 :(得分:-1)
add
double x = 1.89; //Or whatever
String[] y = String.valueOf(x).split("[.]"); // Returns array having 1 and 89
String z = y[0] + y[1]; //String which is = 189
if(y[1].length()==1)
z +="0"; // Add a 0 in end if required
int finalInt = Integer.parseInt(z); //Convert String to Integer
应该是你想要的。