double x = distance/maxRange;
而想要X等於1/3例如,當距離= 10和maxRange = 30而不是0
如何我聯繫有關正確格式化?
謝謝。
double x = distance/maxRange;
而想要X等於1/3例如,當距離= 10和maxRange = 30而不是0
如何我聯繫有關正確格式化?
謝謝。
double x = (double) 1/3;
System.out.println(x); // result print 0.3333333333333333
您必須將計算轉換爲雙,否則你將會獲得0
假設distance
和maxRange
都是整數,除法總是會導致0
。你必須這樣做,把它們編成了double
什麼迫使它做浮點除法:
double x = ((double) distance)/maxRange;
雙:雙數據類型是雙精度64位IEEE 754浮點。
double z = (double) 1/3;
System.out.println("Result Using Double = " + z);
/*
Result Using Double = 0.3333333333333333
*/
雙有53位精度只能在https://en.wikipedia.org/wiki/Double-precision_floating-point_format看到。 所以如果你需要超過53位精度最好的選擇是使用BigDecimal
例如:
BigDecimal distance = new BigDecimal("1");
BigDecimal maxRange = new BigDecimal("3");
BigDecimal x = distance.divide(maxRange, /*precision-scale*/ 100, RoundingMode.HALF_UP);
System.out.println("Result Using BigDecimal=" + x);
/*
Result Using BigDecimal=0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
*/
http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
'double'不具有64位精度,只有53位。只需要'1.0/3'或'1/3.0',比鑄件更清潔和更短 –
你的意思是專門'1/3'控制檯,而不是'0.33333 ... ' –
'distance'和'maxRange'都是int(或'long's)嗎? – MadProgrammer
無論是或將工作1/3或0.3333我必須採取這一數字,並通過其他東西倍數返回。我正在使用雙打。 – Carson