64-Bit Bank Balances ‘Ought to Be Enough for Anybody’?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
  • 0.30000000000000004

    Floating Point Math Examples

    Surprisingly common values like 0.1 don't have a precise representation in binary for most formats, including standard floating point number formats. See https://0.30000000000000004.com/ for more detail than you can shake a stick at.

    Also if the local tax code states using 5 decimal places for intermediate values when you will introduce “errors” using formats that give greater precision as well as those that give less precision. Having work on mortgage and pension calculations I can state that the (very) small errors seen at individual steps because of this can balloon significantly through repeated calculations.

    Furthmore, the name floating point gives away the other issue. Floating point numbers are accurate to a given number of significant figures not decimal places. For large numbers any decimal places you have in the result are at best an estimate, and as above any rounding errors at each stage can compound into a much larger error by the end of a calculation.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Joda-Money

    Java library to represent monetary amounts.

  • Chronicle-Core

    Low level access to native memory, JVM and OS.

    You _can_ use floating point if you are very careful and know what you are doing and know about decimal normalization (see e.g. OpenHFT implementation for high-frequency trading: https://github.com/OpenHFT/Chronicle-Core/blob/ea/src/main/j...)

    But if you are not an expert, you better stick to BigDecimal and absorb the performance costs.

  • order-graph

    Matching engine + order routing for limit orders

    This only puts currency codes in the type system; and uses rational numbers for amounts.

    This is definitely useful because you can have the type system tell you if you've implemented e.g. exchange rate conversion incorrectly. But it's also a hassle because you need to reify currency values discovered at runtime as types, which isn't pretty [1].

    [1] https://github.com/runeksvendsen/order-graph/blob/eef0006cba...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • please for the love of god just use google before you make yourself look stupid

    6 projects | /r/ProgrammerHumor | 26 May 2022
  • [Production code] The previous dev thought it was ok to use floating point variables for money

    4 projects | /r/programminghorror | 12 Nov 2022
  • 1JPM: A Maven/Gradle alternative in a single Java file

    6 projects | news.ycombinator.com | 8 Jul 2024
  • Top 10 GitHub Repositories for Python and Java Developers

    21 projects | dev.to | 3 May 2024
  • LogCaptor: Simplificando o Teste de Logs em APIs REST Java

    2 projects | dev.to | 12 Mar 2024