我有这样的代码:Java的双重令人不解的四舍五入
package picalculator;
//import java.util.Scanner;
public class PiCalculator {
static int odd=1;
public static void main(String[] args) {
calculatePi();
}
public static void calculatePi() {
int counter=0;
double pi=4.0;
int num[];
num = new int[20];
num[0] = generateOdd();
num[1] = generateOdd();
num[2] = generateOdd();
num[3] = generateOdd();
num[4] = generateOdd();
num[5] = generateOdd();
num[6] = generateOdd();
num[7] = generateOdd();
num[8] = generateOdd();
num[9] = generateOdd();
num[10] = generateOdd();
num[11] = generateOdd();
num[12] = generateOdd();
num[13] = generateOdd();
num[14] = generateOdd();
num[15] = generateOdd();
num[16] = generateOdd();
num[17] = generateOdd();
num[18] = generateOdd();
num[19] = generateOdd();
for (int i=0;i<20;i++) {
if(counter == 0) {
pi -= 4/num[i];
counter++;
}else {
pi += 4/num[i];
counter--;
}
}
System.out.print(pi);
return;
}
public static int generateOdd() {
odd += 2;
return odd;
}
}
,由于某种原因,它返回“3.0”即使它应该返回的东西更像是“3.158 ......”
这似乎是之后,double被四舍五入为一个带“.0”的整数。有没有人有如何解决这个问题的想法?提前致谢!
整数除法... – Mysticial 2012-03-14 04:46:39
有没有神秘感,你将* *整数双打没有。 – 2012-03-14 04:48:09
可能的重复[如何在Java中舍入而不舍入?](http://stackoverflow.com/questions/8706727/how-can-i-divide-without-rounding-in-java) – 2012-03-14 04:50:56