liljaMedlem sedan juli 20041 183 inläggdet har inget med variabler att göra!
det är i programkoden det händer!
Om jag vill multiplicera ett tal med ett annat ändrar ibland Visual Studio .Net på min kod!
Om jag skrev in ex. 1.057 så står det 1.056999999999 efter att Visual Studio .Net har validerat koden!
Har inget med variabler eller programkörning att göra! Det är i koden det är problem!
NNöffMedlem sedan nov. 2003569 inlägg Inte vara syra. Gör nu detta pöjk:
double test=double.Parse("17,5")*double.Parse("1,057");
label2.Text=test.ToString();
:bire
PDahlenMedlem sedan apr. 2004778 inläggEftersom Visual Studio i vissa fall validerar som skit så kanske du skulle stänga av formatteringen.
Felet ligger alltså i inställningarna i Visual Studio i det klassrum där felet är.
Vad de övriga grabbarna här försöker göra är att ge dig en lösning så att det inte spelar någon roll vad VS gör.
Marcus EMedlem sedan maj 20021 466 inläggJag har nu testat din kod och du har rätt. VS .NET ändrar de flyttal man skriver in. :l
Jag tycker att ett IDE ska ändra så lite som möjligt i den kod man skriver in och göra ändringar endast vid begäran. Du kan stänga av detta (Options->Text Editor->Basic->VB Specific->Pretty listing) men då ändras inte längre if till If. Fast det är nog lika bra.
Att flyttalen bara ändras på vissa datorer beror på att du har olika processorer som inte representerar flyttal på samma sätt.
Exemplet som Nöff gav ska undvikas så mycket som möjligt. Parse ska aldrig användas i onödan eftersom den fungerar olika med olika kulturer.
liljaMedlem sedan juli 20041 183 inläggok, tackar som förstod min fråga och som fick mig att förstå... Det var den frågan jag ville ha svar på...
så det beror alltså på processorerna? det var som attan :)
NNöffMedlem sedan nov. 2003569 inlägg
Exemplet som Nöff gav ska undvikas så mycket som möjligt. Parse ska aldrig användas i onödan eftersom den fungerar olika med olika kulturer.
Hur menar du då om man får fråga?. Om man tex har ett decimal-tal i en textbox, hur ska man då få den till en double?.
UlfTMedlem sedan maj 20018 027 inlägg
Nöff skrev:
Exemplet som Nöff gav ska undvikas så mycket som möjligt. Parse ska aldrig användas i onödan eftersom den fungerar olika med olika kulturer.
Hur menar du då om man får fråga?. Om man tex har ett decimal-tal i en textbox, hur ska man då få den till en double?.
Han menar nog just ditt specifika exempel, där du ger en sträng direkt i källkoden, som ska parsas. I fallet med textboxar, spelar kulturen ingen roll, eftersom en svensk alltid skriver decimaltalen med decimalkomma, och en amerikan alltid använder decimalpunkt. Men står strängen direkt i källkoden, då är det ett decimalkomma som står där, även om programmet körs i USA. Och då blir strängen misstolkad.
NNöffMedlem sedan nov. 2003569 inlägg Så att ett program som använder "double test=double.Parse("1,009");" och är skrivet i sverige kommer inte att fungera i tex USA?.
Marcus EMedlem sedan maj 20021 466 inläggDet kommer att fungera på alla datorer som har komma inställt som decimaltecken i de regionala inställningarna (kultur). I många länder används punkt istället. Där fungerar det inte. Format och Parse använder användarens kultur men du kan själv välja den kultur som ska användas genom att skicka med den som ett argument.