Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95

    [C#] Arrotondare il numero e a n cifre decimali

    Ciao a tutti!
    Vorrei realizzare un programmino che mi calcoli tutte le cifre dopo la virgola del numero e (2.71........). So che c'è la costante Math.E, ma io voglio poter calcolare tutte le cifre dopo la virgola che voglio.
    Sto provando con lo sviluppo in serie di Taylor, che mi dice che e è uguale alla serie con n che va da 0 a infinito di 1/n! . Con il seguente codice:
    double serie = 0;
    for (long i = 0; i < 300; i++)
    {
    serie = serie + 1 / GetFattoriale(i);
    Console.WriteLine(serie);
    }
    A parte che vedo che mi stampa un 1 e poi va avanti a stamparmi il 2, poi giunto a i=66, mi dà una DivideByZeroException.

    Immagino che sto sbagliando completamente impostazione per questo programma. Come faccio ad arrotondare il numero e ad un numero di cifre decimali molto grande che decido io?
    Grazie in anticipo per il vostro aiuto!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    Non sò se questo link può esserti d'aiuto :
    http://msdn.microsoft.com/it-it/library/364x0z75(VS.80).aspx

  3. #3
    GetFattoriale è una funzione che restituisce quale tipo di dato? 66! è un numero molto grande, dell'ordine di 1e+92, ma non ci sono tipi di dato numerici che hanno questo numero come limite superiore. Forse dovresti convertire esplicitamente l'uno in double (CDbl(1) o 1.0D), cosicché anche il rapporto venga considerato con operandi double.
    Il tuo codice però fornisce anche da subito molte cifre decimali: quello che cambia è la precisione, poiché con n->+inf la serie tende a e. Con la potenza di calcolo disponibile usando i double potresti arrivare circa a 170! (dell'ordine di 1e+306).

  4. #4
    Di solito per arrotondare utilizzo la funzione Math.Round(double value, int digits);

    codice:
    protected void Page_Load(object sender, EventArgs e)
        {
            double numero = 1.243234235235;
            Response.Write(Math.Round(asd,5)); //mostra (1,24323)
        }
    Spero di esserti stato d'aiuto....
    Ciaoo
    Scusate ho letto male la richiesta....

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.