Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-07-2011, 18:18   #1
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
[JAVA] Arrotondamento double non convincente

Codice:
private double arrotondaDoubleEccesso(double d, int cifre) {
        BigDecimal bd = new BigDecimal(d);
        bd = bd.setScale(cifre, BigDecimal.ROUND_UP);
        return bd.doubleValue();

    }
sappiamo bene come funziona, però io ho fatto esattamente questa operazione:

25/45
10/45
10/45

e i risultati sono stati

0.556
0.223
0.223

che ovviamente fà 1.002

posso ovviare in qualche modo a questo problema o no?
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2011, 22:58   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da franksisca Guarda i messaggi
posso ovviare in qualche modo a questo problema o no?
Se prima di fare la somma arrotondi tutti i parziali alla terza cifra con ROUND_UP ovviamente il totale calcolato non è equivalente a quello dato dai valori originari.
Il "rimedio" è uno solo: evitare di arrotondare i parziali prima di sommarli.

Immagino tu voglia arrivare ad avere la somma totale esatta in uno scenario in cui per qualche ragione sei costretto a elaborare così i parziali prima di poterli sommare, ma senza una descrizione più articolata del tuo scenario, limiti da rispettare e requisiti da soddisfare è molto difficile darti qualche consiglio.

Tirando un tentativo a caso potrei allora suggerirti di non salvare il valore double arrotondato della frazione 10/45, ma la frazione stessa magari usando due short o due int (volendo potresti sempre prima minimizzare i termini della frazione, ad es.: 10/45 -> 2/9) fino al momento in cui dovrai fare la somma: a quel punto produci il valore double del risultato di ogni frazione da sommare e lo accumuli alla somma.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 12-07-2011 alle 23:01.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 09:23   #3
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12919
Quoto banryu, se hai bisogno dell'arrotondamento, lo devi effettuare alla fine dei calcoli, non durante gli stessi.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 10:47   #4
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
allora il problema in esame è quello del calcolo delle tabelle millesimali, quindi i valori "parziali" mi servono, perchè devo assegnare dei millesimi ad ogni singola unità immobiliare.

l'idea della frazione quindi non è adattabile, così come non è adattabile un troncamento forzato a tre cifre. Dovrò vedere se sesistono costanti diverse da ROUND_UP che mi possono aiutare.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 11:07   #5
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
al momento la soluzione più immediata (e anche la più ovvia) è di usare BigDecimal.ROUND_HALF_EVEN. Se comunque avete anche altre idde postate pure
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 21:15   #6
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Non potresti usare sempre i valori "effettivi", salvati come BigDecimal (quindi a precisione infinita) e convertirli solo quando li devi rappresentare, cioè praticamente quando li devi stampare? Dovresti costruirti una funzione che traduce il numero in stringa, senza passare per .doubleValue().
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2011, 21:41   #7
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da Mixmar Guarda i messaggi
Non potresti usare sempre i valori "effettivi", salvati come BigDecimal (quindi a precisione infinita) e convertirli solo quando li devi rappresentare, cioè praticamente quando li devi stampare? Dovresti costruirti una funzione che traduce il numero in stringa, senza passare per .doubleValue().
forse il problema non è chiaro.
io ho bisogno della rappresentazione con 3 cifre dopo la virgola dal momento del calcolo perchè devono essere immediatamente visualizzati.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2011, 09:01   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da franksisca Guarda i messaggi
forse il problema non è chiaro.
io ho bisogno della rappresentazione con 3 cifre dopo la virgola dal momento del calcolo perchè devono essere immediatamente visualizzati.
Ieri mi era venuto in mente di suggerirti ti farti una funzione, usare un array per memorizzare i parziali, e arrotondare per eccesso o per difetto ogni elemento in base all'indice (pari o dispari) e comunque avendo cura di verificare la somma totale. Ma non so se è una buona idea o meno: non mi sono mai trovato in un caso simile al tuo.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2011, 16:38   #9
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ieri mi era venuto in mente di suggerirti ti farti una funzione, usare un array per memorizzare i parziali, e arrotondare per eccesso o per difetto ogni elemento in base all'indice (pari o dispari) e comunque avendo cura di verificare la somma totale. Ma non so se è una buona idea o meno: non mi sono mai trovato in un caso simile al tuo.
valuterò
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Il primo SUV R2 di Rivian esce dalla cat...
Auricolari Bluetooth a rischio: la falla...
Modificare il nuovo indirizzo Gmail è fi...
TV 4K in offerta su Amazon: QLED Hisense...
Tesla ha ora la sua raffineria di litio:...
Ancora aumenti per Fastweb: nuove condiz...
GeForce RTX 5070 Ti: intervengono ASUS e...
Xiaomi Redmi Note 15 Pro subito giù di p...
SiFive adotta NVLink Fusion: RISC-V si i...
Amazon ha annunciato la fine di New Worl...
Umidità addio: deumidificatori el...
Konami festeggia 950 milioni di download...
Modelli gen AI sul tuo Raspberry Pi? Con...
Il CEO di Nothing, Carl Pei, avverte: i ...
Serie A, richieste di risarcimento agli ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v