Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 2.869 pregleda

Najnovija ↓

C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 11:46 · pre 59 meseci #1
Pozdrav

Jel moze molim vas neko da mi kaze sta moze da bude problem kad mi za ovako nesto vraca vrednost 0?

Code:

using System;
                    
public class Program
{
    public static void Main()
    {
        var calc = (2/(3600 / (3600 / 4))) * 5;
        Console.WriteLine(calc.ToString());//Value returned is 0 and should be 2.5
    }
}


https://dotnetfiddle.net/UIeHa5
Potpis
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 11:52 · pre 59 meseci #2
Napisao si celobrojno deljenje
Code:
using System;
                    
public class Program
{
    public static void Main()
    {
        var calc = (2.0/(3600 / (3600 / 4))) * 5;
        Console.WriteLine(calc.ToString());//Value returned is 0 and should be 2.5
    }
}
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 13:25 · pre 59 meseci #4
Pa tako je u većini C-like jezika. Ako jezik može da razume da je u operacijama korišćen samo int tip podataka, sve će da radi kao celobrojnu aritmetiku. Ako jezik podržava implicitnu konverziju, staviš jedan float/double parametar pa će sve (možda) da odradi u pokretnom zarezu. Ja sam stavio samo jedan float - 2.0 - jer sve ostale operacije daju isti rezultat i u celobrojnoj i u float aritmetici.
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 13:58 · pre 59 meseci #5
Za mene je samo jedno mozda razlika dal cu da prihvatim projekat il ne a ovo
Code:

using System;
                    
public class Program
{
    public static void Main()
    {
        int a = 2;
        float b = 2;
        double c = 2;
        int d = 3600;
        double e = 3600;
        int f = 4;
        double g = 4;    
        int h = 5;    
        
        var calca = (a/(d / (d / f))) * h;
        var calcb = (b/(d / (d / f))) * h;
        var calcc = (c/(e / (e / f))) * h;
        var calcd = (a/(e / (e / f))) * h;
        var calce = (a/(d / (d / g))) * h;        
                
        Console.WriteLine(calca.ToString()); // 0
        Console.WriteLine(calcb.ToString()); // 2.5
        Console.WriteLine(calcc.ToString()); // 2.5
        Console.WriteLine(calcd.ToString()); // 2.5
        Console.WriteLine(calce.ToString()); // 2.5
        
    }
}


znaci da cu posle 20 godina da kompletno izbacim integer iz svih projekata!!! Ne mogu da verujem
Potpis
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 14:30 · pre 59 meseci #6
Ne moraš da izbaciš int iz programiranja, koristi cast. Uostalom, ako je tebi bitno da rezultat bude 2.5 (float), zašto očekuješ da će int aritmetika da ti da float rezultat?
Sviđa mi se1
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 14:49 · pre 59 meseci #7
Pa OK ne mora da vrati int al nek baci ex ... Ja sam kriv svakako al sam sa int zavrsio big time ako ce da bude umesan u bilo kakve kalkulacije ..samo za ID MOZDA :D
Potpis
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 15:25 · pre 59 meseci #8
U tom slucaju bi u vecini slucajeva deljenja imao exception :)
Ako uzmes sve intove i podelis jedan sa drugim, vise bi putao imao exception nego rezultat.
S druge strane, dobijanje celog dela rezultata deljenja celih brojeva nije toliko cudna stvar. Jedonstavno, deli ti sa onoliko preciznosti koliko moze (kao sto je to slucaj i sa drugim tipovima 1/3 i ce ti i za double i float dati preciznost samo koliko moze, nece tacnu vrednost).

Ono sto je tebe verovatno dovelo u zabludu je da kada napises 2 to je u stvari int iako nigde ne pise a sa gledista matematike isto tako bi se pisao i double. No, programskom jeziku ipak treba precizno sta hoces.
Dalje je sve jasno, imas int-ove u operacijama pa je i rezultat int koji mora biti svedeni na ceo broj, cak i ako matematicki gledano operacija daje rezultat koji nije ceo broj.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Sviđa mi se1
Re: C# prosta mnozenje/deljenje mi ne radi 18.12.2021. u 15:39 · pre 59 meseci #9
@Shadowed
Da ocigledno ste u pravu nema sumnje al je po meni to lose resenje za na primer pocetnike kao ja, ma resicu ga nema problema samo dok sam mu vido navike :)
Potpis
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme