riferimento alla documentazione di BigDecimal
classe,Se utilizzare String o Integer in BigDecimal in Ruby
n,m = a.precs
prec
restituisce il numero di cifre significative (n
) e numero massimo di cifre significative (m
) dia
.
Sono perplesso dal seguente output relativo a BigDecimal
.
require 'bigdecimal'
BigDecimal.new('1').precs # => [9, 18]
BigDecimal.new(1).precs # => [9, 27]
non riesco a capire perché quando viene passato un String
, il numero massimo di cifre significative è inferiore rispetto a quando è passato un Fixnum
.
Inoltre causerà problemi di precisione?
Il costruttore prende un secondo argomento se si desidera la coerenza: 'BigDecimal.new ('1', 27) .precs' per esempio. E la documentazione dice che il "numero di cifre significative è determinato dal valore iniziale" se non lo specifichi tu stesso. –
@muistooshort il tuo diritto che possiamo specificarlo. Ma la mia domanda era: perché i precs sono diversi in primo luogo? – abhinavmsra
Qui ci sono più punti dati. Le seguenti osservazioni si riferiscono a stringhe contenenti solo il carattere '1' (ad es.," "111111" ') e numeri le cui cifre sono tutte' '1' (ad esempio,' 111111'). Per meno di caratteri '10', viene restituito' [9,18] '. Per meno di cifre '10', viene restituito' [9,27] '. Tra '10' e' 18' caratteri * o * cifre, '[18,27]' viene restituito (vale a dire, la stessa tupla viene restituita per entrambe le stringhe e numeri), tra '19' e un numero maggiore di caratteri o cifre , '[27,36]' viene restituito. A parte: ti suggerisco di aggiungere 'require 'bigdecimal'' al tuo codice. –