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) {
|
public static BigDecimal p(int n) {
|
||||||
BigDecimal p = BigDecimal.ONE;
|
BigDecimal p = BigDecimal.ONE;
|
||||||
for (int i = 1; i < n; i++) {
|
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)) {
|
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);
|
return BigDecimal.ONE.subtract(p);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import java.math.RoundingMode;
|
|||||||
public class ChudnovskyAlgorithm {
|
public class ChudnovskyAlgorithm {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
|
// 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170680
|
||||||
System.out.println(computePi());
|
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));
|
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));
|
l = l.add(BigInteger.valueOf(545140134));
|
||||||
x = x.multiply(BigInteger.valueOf(-262537412640768000L));
|
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));
|
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 class EulerNumber {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664238
|
// 2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274
|
||||||
System.out.println(e());
|
System.out.println(e());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ public class EulerNumber {
|
|||||||
BigDecimal f = BigDecimal.valueOf(1);
|
BigDecimal f = BigDecimal.valueOf(1);
|
||||||
for (long i = 1; i < 1000; i++) {
|
for (long i = 1; i < 1000; i++) {
|
||||||
f = f.multiply(BigDecimal.valueOf(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;
|
return e;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import java.math.RoundingMode;
|
|||||||
public class LeibnizFormula {
|
public class LeibnizFormula {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 3.1415925535897932384628933832795028810721693993752011334749445868976601562867023677686597593566430148
|
// 3.1415925535897932384628933832795028810721693993752011334749445868976601562867023677686597593566436288
|
||||||
System.out.println(pi());
|
System.out.println(pi());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ public class LeibnizFormula {
|
|||||||
BigDecimal p = BigDecimal.ZERO;
|
BigDecimal p = BigDecimal.ZERO;
|
||||||
|
|
||||||
for (long i = 0; i < 10000000; i++) {
|
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) {
|
if (i % 2 == 0) {
|
||||||
p = p.add(v);
|
p = p.add(v);
|
||||||
} else {
|
} 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 class WallisProduct {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 3.1415925750499739534746260502048989270653181072075621931977986489848855062212872415726332946132240849
|
// 3.1415925750499739534746260502048989270653181072075621931977986489848855062212872415726332946168657188
|
||||||
System.out.println(pi());
|
System.out.println(pi());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,11 +15,11 @@ public class WallisProduct {
|
|||||||
for (long i = 1; i < 10000000; i++) {
|
for (long i = 1; i < 10000000; i++) {
|
||||||
BigDecimal doubleI = BigDecimal.valueOf(i * 2);
|
BigDecimal doubleI = BigDecimal.valueOf(i * 2);
|
||||||
p = p.multiply(
|
p = p.multiply(
|
||||||
doubleI.divide(doubleI.subtract(BigDecimal.ONE), 100, RoundingMode.FLOOR)
|
doubleI.divide(doubleI.subtract(BigDecimal.ONE), 100, RoundingMode.HALF_UP)
|
||||||
).multiply(
|
).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;
|
return p;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user