Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
20
Task/Approximate-equality/Scala/approximate-equality.scala
Normal file
20
Task/Approximate-equality/Scala/approximate-equality.scala
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
object Approximate extends App {
|
||||
val (ok, notOk, ε) = ("👌", "❌", 1e-18d)
|
||||
|
||||
private def approxEquals(value: Double, other: Double, epsilon: Double) =
|
||||
scala.math.abs(value - other) < epsilon
|
||||
|
||||
private def test(a: BigDecimal, b: BigDecimal, expected: Boolean): Unit = {
|
||||
val result = approxEquals(a.toDouble, b.toDouble, ε)
|
||||
println(f"$a%40.24f ≅ $b%40.24f => $result%5s ${if (expected == result) ok else notOk}")
|
||||
}
|
||||
|
||||
test(BigDecimal("100000000000000.010"), BigDecimal("100000000000000.011"), true)
|
||||
test(BigDecimal("100.01"), BigDecimal("100.011"), false)
|
||||
test(BigDecimal(10000000000000.001 / 10000.0), BigDecimal("1000000000.0000001000"), false)
|
||||
test(BigDecimal("0.001"), BigDecimal("0.0010000001"), false)
|
||||
test(BigDecimal("0.000000000000000000000101"), BigDecimal(0), true)
|
||||
test(BigDecimal(math.sqrt(2) * math.sqrt(2d)), BigDecimal(2.0), false)
|
||||
test(BigDecimal(-Math.sqrt(2) * Math.sqrt(2)), BigDecimal(-2.0), false)
|
||||
test(BigDecimal("3.14159265358979323846"), BigDecimal("3.14159265358979324"), true)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue