Domanda

Sono sempre stato curioso: come posso eseguire operazioni aritmetiche su decimali molto lunghi - per esempio, calcolando pi al 3000 ° decimale (specialmente in un linguaggio imperativo)?

È stato utile?

Soluzione

Utilizzare una lingua o una libreria che supporti numeri di precisione arbitrari ...?

In Python, gli ints si auto-promuovono per lunghi di dimensioni arbitrarie. È possibile utilizzare un secondo valore per tenere traccia di quanti decimali devono essere spostati per ottenere una sorta di virgola mobile di precisione arbitraria.

In Java puoi utilizzare BigDecimal , che rappresenta " Numeri decimali con segno di precisione arbitraria immutabile " ;.

Sono sicuro che esistono altri esempi in altre lingue.

Altri suggerimenti

Per le lingue che non supportano i calcoli sui bignum, ci sono spesso librerie. Potresti dare un'occhiata a GMP , ad esempio. I documenti ti daranno indicazioni su alcuni dei tipici approcci algoritmici.

Rendere veloce l'aritmetica di bignum è difficile, quindi ci sono alcuni algoritmi piuttosto contorti là fuori ...

Devi lavorare con i dati a livello di cifra (ad es. calcolare ogni cifra in modo incrementale o deterministico) o definire nuove strutture di dati che hanno un numero sufficiente di bit per fornire un'adeguata precisione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top