我试图围绕这样的双倍值:1.14593409534253205304203E-14 我不知道E-14意味着什么...... 我希望它是1.1。这就是我尝试的方式:
speed = (distanceupdate / 1000) / (milliseconds * 3600000);
speed2 = speed2 + speed; speed3++;
BigDecimal speed4 = new BigDecimal(speed).setScale(1, RoundingMode.HALF_EVEN);
double speed5 = speed4.doubleValue();
我之前做了另一个值并且它有效,但是这个值不起作用。 我查了一下,重视"速度"不是NULL,它始终> 0。 speed5始终为NULL = [
答案 0 :(得分:1)
你不能使双精度等于1.1。双倍必须是2 / 2,1 / 4,1 / 8,1 / 16或其某种组合的逆幂。它不能是1/10。
答案 1 :(得分:1)
尝试在舍入时转换为int,然后再将其转换为double
double speed = 1.14593409534253205304203 * Math.pow(10, -14); // equals 1.145934095342532E-14
int speedInt = (int) Math.round(speed * Math.pow(10, 15)); // equal 11
speed = speedInt / 10.0; // equals 1.1
此外,对于1.14593409534253205304203×10 ^ -14,E-14部分为scientific notation。
答案 2 :(得分:0)
我不知道你的类型是什么类型的速度等,但具有你指定的确切值我写了这个并得到1.1作为答案。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Example{
public static void main(String[] args) {
double speed = 1.14593409534253205304203;
BigDecimal speed4 = new BigDecimal(speed).setScale(1, RoundingMode.HALF_EVEN);
double speed5 = speed4.doubleValue();
System.out.println("Value : " + speed5);
}
}
输出:
( ô_ô)σ : java Example
Value : 1.1
并且,是( ô_ô)σ
是我的命令提示符。