» »

[c#] NaN, not a number

[c#] NaN, not a number

japol ::

Kako naredim, če slučajno dobim vrednost sprememnljivke NaN, da ji določi vrednost 0?
Poskušam nekaj takega ampak ni učinka:
a1 = double.Parse(textBox20.Text);
a2 = double.Parse(textBox21.Text);
if (a1 == double.NaN)
{
a1 = 0;
}
if (a2 == double.NaN)
{
a2 = 0;
}

kogledom ::

TryParse si poskusil?

Infinity ::

želiš narediti da bo deloval le kot numeric input?

drugače pa si malo preberi dokumentacijo http://msdn.microsoft.com/en-us/library... tako deluje TryParse ki ti bo naredil to kar si ti vprašal.

japol ::

Bom dal kar primer:
imam:
-3,5/16 : 13,92 + 0,00 = 13,92
-3,5/17 : 13,30 + 0,00 = 13,30
-3,5/18 : 12,74 + 0,00 = 12,74
-3,5/19 : 12,24 + 0,00 = 12,24
-3,5/20 : 11,78 + 0,00 = 11,78
-3,5/21 : 11,35 + 0,00 = 11,35
-3,5/22 : 10,96 + 0,00 = 10,96
-3,5/23 : 10,61 + 0,00 = 10,61
-3,5/24 : 10,27 + 0,00 = 10,27
-3,5/25 : 9,95 + NaN = NaN
-3,5/26 : 9,67 + 0,00 = 9,67
-3,5/27 : 9,40 + 0,00 = 9,40
-3,5/28 : 9,14 + 0,00 = 9,14
-3,5/29 : 8,90 + 0,00 = 8,90
-3,5/30 : 8,67 + 0,00 = 8,67
-3,5/31 : 8,47 + 0,00 = 8,47

in potem potrebujem minimalno vrednost, kot je iz seznama vidno, je to zadnja vrednost, ampak ker je nekje vmes NaN, mi vedno njega izpostavi kot minimalno vrednst.

Zato želim, da če je vrednost NaN, da namesto nje vzame 0 (nadomesti NaN z 0).

boolsheat ::

Mogoče kaj takega

if(textBox20.Text=="NaN")
a=0;

Torej preveri, če je vhodni string enak Nan in potem nastavi vrednost spremenljivke...

Zgodovina sprememb…

kogledom ::

Uporabi LINQ:
double min = vrednosti.Where(n => n != double.NaN).Min();

Smurf ::

Nisem kaj dosti programiral v c#, ampak imam v spominu, da NaN ni enak NaN (kar je logicno saj oznacuje, da ni stevilka, torej je ne mores primerjati).

Mislim, da bi moralo delati a1.Equals(Nan).

Zgodovina sprememb…

  • spremenil: Smurf ()

Senitel ::

There:
double.isNaN(num) // true/false

mihies ::

kogledom je izjavil:

Uporabi LINQ:
double min = vrednosti.Where(n => n != double.NaN).Min();


Tole ti bo ruklno, če zaporedje nima elementov, npr:
int min = new int[0].Min();


Lahko se prej vprašaš, če zaporedje ima elemente, ali pa rešiš z ničelnimi tipi:
int? min = new int[0].Min(i => (int?)i);
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

Infinity ::

double val;
a1 = !double.TryParse(textBox20.Text, out val) ? 0 : price;


tkole je najbl simpl

mihies ::

Infinity je izjavil:


double val;
a1 = !double.TryParse(textBox20.Text, out val) ? 0 : price;


tkole je najbl simpl


Od kje pa price dobiš v tem primeru?

Verjetno si imel v mislih tole:
double val;
a1 = !double.TryParse(textBox20.Text, out val) ? 0 : val;


FYI po mojem največja vrednost TryParse pred Parse je to, da prvi ne vrže izjeme, če mu tekst ni všeč.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

Zgodovina sprememb…

  • spremenil: mihies ()

Infinity ::

hvala, to sem imel v mislih :) malo sem se zatipkal ko sem pretipkaval kodo :)

točno to da ne vrže izjeme je prednost, ker ti vrne točno to kar večinoma rabiš, in to ni napaka v programu kadar beremo user input torej nipotrebna izjema.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# Top tutoriali

Oddelek: Programiranje
252411 (1674) darkkk
»

[c#] kako skriti vsebino

Oddelek: Programiranje
342851 (2035) def0r
»

[C#] seštevanje vrednosti

Oddelek: Programiranje
71023 (926) mihies
»

[c#] try/catch, v katerem gradniku je napaka

Oddelek: Programiranje
10957 (695) japol
»

[c#] Vstavljanje vrednosti v tabelo

Oddelek: Programiranje
111524 (1346) Cvenemir

Več podobnih tem