2010-03-30 3 views
9

Qual è il tipo corretto da utilizzare nello sviluppo Qt (o C++ in generale) per l'aritmetica decimale, ovvero l'equivalente della struttura System.Decimal in .Net?Tipo decimale in Qt (C++)

  • Qt fornisce una struttura incorporata? (Non riesco a trovarlo nei documenti, ma forse non so dove cercare.)
  • C'è una libreria C++ "standard" da utilizzare?

risposta

9

Qual è il tipo corretto da utilizzare Qt sviluppo (o C++ in generale) per aritmetica decimale, cioè la equivalente di System.Decimal struct in Net?

Né la libreria standard C++ né Qt hanno alcun tipo di dati equivalente a System.Decimal in .NET.

Qt fornisce una struttura incorporata? (I non riesco a trovarlo nella documentazione, ma forse non so dove andare a cercare.)

No.

C'è una biblioteca "standard" C++ per uso?

No.

Ma si potrebbe desiderare di avere uno sguardo alla GNU Multiple Precision Arithmetic Library.

[EDIT:] Una scelta migliore rispetto alla libreria sopra potrebbe essere qdecimal. Include una virgola decimale conforme allo standard IEEE, che è molto simile (ma non esattamente uguale a) al decimale .NET, oltre a utilizzare gli idiomi e le pratiche Qt.

2

Non esiste alcun tipo decimale in C++ e, a quanto ne so, non esiste nessuno fornito da Qt. A seconda del range di valori, una soluzione decente potrebbe essere quella di utilizzare semplicemente un unsigned int e dividerlo/moltiplicarlo per una potenza di dieci quando lo si visualizza.

Per esempio, se stiamo parlando di dollari, si potrebbe fare questo:

unsigned int d = 100; // 1 dollar, basically d holds cents here...

o se si vuole 3 cifre decimali e ha voluto conservare 123.456

unsigned int x = 123456; e fare solo alcuni semplicemente matematica durante la visualizzazione:

printf("%u.%u\n", x/1000, x % 1000);

+1

È necessario azzerare -pad i decimali. – Joey

1

Una rapida ricerca salta fuori che gcc può sostenere decimali directlyand che le informazioni molto più generale è disponibile all'indirizzo per esempio http://speleotrove.com/decimal/