Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [c#] Double e sottrazioni

    A volte usando i double ottengo risultati inattesi

    Ad esempio:

    double x = 1.025
    double y = 1-x;

    orbene se leggo y.ToString() mi da -0.0249999999999 anzichè un atteso -0.025

    Qualcuno mi sa spiegare il perchè ed eventualmente come risolvere?

  2. #2
    il computer manovra i numeri in formato binario e la matematica insegna che è possibile rappresentare come decimali finiti solo le frazioni che hanno a denominatore la base del sistema numerico, i suoi fattori o combinazioni di esse

    esempio in base 10:
    è possibile rappresentare come decimali finiti solo divisioni per 10, 2, 5 o potenze (4,200,625...)

    in base 2 l'unico fattore primo è 2, di conseguenza ogni divisione per un numero che non è potenza di 2 restituisce un numero periodico, che viene approssimato

    nel tuo caso devi usare delle librerie numeriche a precisione arbitraria
    (consulta la documentazione .net, dovrebbero esserci)
    Armageddon - Chief Developer

    Stiamo cercando collaboratori!

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Sposto in Visual Basic e .NET Framework.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.