feat: use half up instead of floor
This commit is contained in:
@@ -19,10 +19,10 @@ public class BirthdayParadox {
|
||||
public static BigDecimal p(int n) {
|
||||
BigDecimal p = BigDecimal.ONE;
|
||||
for (int i = 1; i < n; i++) {
|
||||
p = p.multiply(BigDecimal.ONE.subtract(BigDecimal.valueOf(i).divide(BigDecimal.valueOf(365), 100, RoundingMode.FLOOR)));
|
||||
p = p.multiply(BigDecimal.ONE.subtract(BigDecimal.valueOf(i).divide(BigDecimal.valueOf(365), 100, RoundingMode.HALF_UP)));
|
||||
}
|
||||
if (!p.equals(BigDecimal.ONE)) {
|
||||
p = p.divide(BigDecimal.ONE, 100, RoundingMode.FLOOR);
|
||||
p = p.divide(BigDecimal.ONE, 100, RoundingMode.HALF_UP);
|
||||
}
|
||||
return BigDecimal.ONE.subtract(p);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.math.RoundingMode;
|
||||
public class ChudnovskyAlgorithm {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
|
||||
// 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170680
|
||||
System.out.println(computePi());
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ public class ChudnovskyAlgorithm {
|
||||
m = (k.pow(3).subtract(k.multiply(BigInteger.valueOf(16)))).multiply(m).divide(BigInteger.valueOf(i + 1).pow(3));
|
||||
l = l.add(BigInteger.valueOf(545140134));
|
||||
x = x.multiply(BigInteger.valueOf(-262537412640768000L));
|
||||
s = s.add(new BigDecimal(m.multiply(l)).divide(new BigDecimal(x), 100, RoundingMode.FLOOR));
|
||||
s = s.add(new BigDecimal(m.multiply(l)).divide(new BigDecimal(x), 100, RoundingMode.HALF_UP));
|
||||
k = k.add(BigInteger.valueOf(12));
|
||||
}
|
||||
|
||||
return c.divide(s, 100, RoundingMode.FLOOR);
|
||||
return c.divide(s, 100, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.math.RoundingMode;
|
||||
public class EulerNumber {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664238
|
||||
// 2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274
|
||||
System.out.println(e());
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ public class EulerNumber {
|
||||
BigDecimal f = BigDecimal.valueOf(1);
|
||||
for (long i = 1; i < 1000; i++) {
|
||||
f = f.multiply(BigDecimal.valueOf(i));
|
||||
e = e.add(BigDecimal.ONE.divide(f, 100, RoundingMode.FLOOR));
|
||||
e = e.add(BigDecimal.ONE.divide(f, 100, RoundingMode.HALF_UP));
|
||||
}
|
||||
return e;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.math.RoundingMode;
|
||||
public class LeibnizFormula {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 3.1415925535897932384628933832795028810721693993752011334749445868976601562867023677686597593566430148
|
||||
// 3.1415925535897932384628933832795028810721693993752011334749445868976601562867023677686597593566436288
|
||||
System.out.println(pi());
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public class LeibnizFormula {
|
||||
BigDecimal p = BigDecimal.ZERO;
|
||||
|
||||
for (long i = 0; i < 10000000; i++) {
|
||||
BigDecimal v = BigDecimal.ONE.divide(BigDecimal.valueOf(i * 2 + 1), 100, RoundingMode.FLOOR);
|
||||
BigDecimal v = BigDecimal.ONE.divide(BigDecimal.valueOf(i * 2 + 1), 100, RoundingMode.HALF_UP);
|
||||
if (i % 2 == 0) {
|
||||
p = p.add(v);
|
||||
} else {
|
||||
@@ -22,6 +22,6 @@ public class LeibnizFormula {
|
||||
}
|
||||
}
|
||||
|
||||
return p.multiply(BigDecimal.valueOf(4)).divide(BigDecimal.ONE, 100, RoundingMode.FLOOR);
|
||||
return p.multiply(BigDecimal.valueOf(4)).divide(BigDecimal.ONE, 100, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.math.RoundingMode;
|
||||
public class WallisProduct {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 3.1415925750499739534746260502048989270653181072075621931977986489848855062212872415726332946132240849
|
||||
// 3.1415925750499739534746260502048989270653181072075621931977986489848855062212872415726332946168657188
|
||||
System.out.println(pi());
|
||||
}
|
||||
|
||||
@@ -15,11 +15,11 @@ public class WallisProduct {
|
||||
for (long i = 1; i < 10000000; i++) {
|
||||
BigDecimal doubleI = BigDecimal.valueOf(i * 2);
|
||||
p = p.multiply(
|
||||
doubleI.divide(doubleI.subtract(BigDecimal.ONE), 100, RoundingMode.FLOOR)
|
||||
doubleI.divide(doubleI.subtract(BigDecimal.ONE), 100, RoundingMode.HALF_UP)
|
||||
).multiply(
|
||||
doubleI.divide(doubleI.add(BigDecimal.ONE), 100, RoundingMode.FLOOR)
|
||||
doubleI.divide(doubleI.add(BigDecimal.ONE), 100, RoundingMode.HALF_UP)
|
||||
);
|
||||
p = p.divide(BigDecimal.ONE, 100, RoundingMode.FLOOR);
|
||||
p = p.divide(BigDecimal.ONE, 100, RoundingMode.HALF_UP);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user