Weboldalunk cookie-kat használhat, hogy megjegyezze a belépési adatokat, egyedi beállításokat, továbbá statisztikai célokra és hogy a személyes érdeklődéshez igazítsa hirdetéseit. További információ
Főoldal Belépés/Regisztráció Egy véletlen kérdés Facebook






Kategória: Számítástechnika » Programozás

A kérdés

Az új VS 2019 másképp működik Console-os applikációnál?

Programnyelv : C# (Konzolos applikáció .Net framework)

Olyan problémám van, hogy amikor lebegőpontos számot olvasok be sztringként pl.: 20.25 (tizedes ponttal), akkor utána el szeretném helyezni egy double típusú változóba úgy hogy konvertálom, akár Convert.ToDouble -el vagy double.parse -el, nem lesz jó.


System.FormatException -t dob, azért mert 20,25-öt (tizedesvesszővel) szeretné "látni".

Nah, de ez VS 2017 tizedesponttal működött.

Hogy ne kelljen a System.Globalization -el szerencsétlenkednem, hol lehetne ezt egyszerűen visszaállítani, van ilyen beállítás valahol a projecten belül? :(


Köszönöm a válaszokat!



Keress kérdéseket hasonló témákban: Visual Studio, C Sharp, programozás, vs2019, Visual C#

  júl. 12. 19:54  Privát üzenet  

A válaszok
1 2 3

Nem működik másképp. Ugyanolyan régió/nyelv beállításoknál pont ugyanaz az eredmény VS2017 és 2019 alatt.


Egyébként mi az a System.Globalization-nal szerencsétlenkedés amit említesz? A Current(UI)Culture beállásátásra gondolsz? Ezt nem nevezném szerencsétlenkedésnek.


Vagy egyszerűen állítsd be a windowsban a nyelvet, de ez nem project beállítás.


Vagy pedig maágt a double parszolást add meg, hgoy invariant culture legyen:

double.Parse("1.1", System.Globalization.CultureInfo.InvariantCulture)



A válasz 100%-ban hasznosnak tűnik. A válaszíró 86%-ban hasznos válaszokat ad.
# 1/21Időpont júl. 12. 19:59 Privát üzenet
Hasznos számodra ez a válasz?
A kérdező kommentje:

hát vs2017-ben elég volt egy

double aDouble = double.Parse(aString);


Most már ez így nem működik. Igen azt a CultureInfo-t nem szeretném odaírni minden egyes alkalommal.


OP rendszeren magyar nyelvű volt akkor is amikor vs2017 volt és működött.



# 2/21Időpont júl. 12. 20:12 Privát üzenet

Nem működik másképp.

Eleve a Visual Studionak semmi köze hozzá.



A válaszíró 65%-ban hasznos válaszokat ad.
# 3/21Időpont júl. 12. 20:14 Privát üzenet
Hasznos számodra ez a válasz?
A kérdező kommentje:

Nem csak nekem nem jó :)

Iskolai feladatok amiket korábban megoldottunk VS2017-ben nem működnek VS2019-ben.


Szóval valahol lenni kell egy lehetőségnek ahol ezt be lehet állítani.



# 4/21Időpont júl. 12. 20:18 Privát üzenet
Ugyanazon a gépen? Ezt nehezen hiszem. Ahogy a második válaszoló is írja, a VSnek semmi köze hozzá. Pontosan ugyanaz a keretrendszer futtatja (Már ha ugyonlyan típusú projectről van szó..de ha nem, akkor ebben akkor sincs különbség a Core és Fw között)

A válaszíró 86%-ban hasznos válaszokat ad.
# 5/21Időpont júl. 12. 20:39 Privát üzenet
Hasznos számodra ez a válasz?

"Igen azt a CultureInfo-t nem szeretném odaírni minden egyes alkalommal."


Nem kell odaírni minden alkalommal. Ahogy írtam #1 válaszomaban, elég, ha CurrentCulture-t átállítod az első parse hívás előtt.



A válaszíró 86%-ban hasznos válaszokat ad.
# 6/21Időpont júl. 12. 20:44 Privát üzenet
Hasznos számodra ez a válasz?

Ennyi körülbelül:


using System;

using System.Globalization;


namespace test

{

public class Program

{

public static void Main()

{

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;

CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;


var number = double.Parse("3.5");

Console.WriteLine(number);

Console.ReadKey();

}

}

}



A válaszíró 62%-ban hasznos válaszokat ad.
# 7/21Időpont júl. 12. 22:05 Privát üzenet
Hasznos számodra ez a válasz?

De gáz.

Nyílt forráskódú szoftver akkor nem is működik magyar gépen VS 2019 alatt? Mármint a forráskódjára gondolok



A válaszíró 70%-ban hasznos válaszokat ad.
# 8/21Időpont júl. 12. 22:26 Privát üzenet
Hasznos számodra ez a válasz?
A kérdező kommentje:

Értem köszönöm!


Viszont így is problémás a dolog mert tizedesvesszőre állítja, viszont a megoldásban szigorúan pontosvesszőnek kell szerepelnie. Ha nem az van akkor hibás megoldás.


Meg is mutatom miről van szó: [link]

Nagyon egyszerű feladat, ennyi lenne:


static void Main(string[] args)

{


string celsiusString;

double celsiusDouble;

double fahrenheitDouble;


while ((celsiusString = Console.ReadLine()) != null)

{

celsiusDouble = double.Parse(celsiusString);


fahrenheitDouble = (9.0 / 5.0) * celsiusDouble + 32.0;


Console.WriteLine(fahrenheitDouble);

}

}


Ez VS2017-el működött, VS2019 nem fog. Ha be is állítom a Culturinfo-t, akkor tizedesvesszővel fog megjelenni, ami nem jó. Persze egyszerűen meg lehet azt is oldani, hogy tizedespont legyen, csak 4 sor helyett vagy 15-20 sort kell majd írni, hogy elfogadható legyen a megoldás. Jelentősen bonyolódik a program egy olyan ember számára, aki mondjuk csak most ismerkedik a nyelvvel.



# 9/21Időpont júl. 12. 22:34 Privát üzenet
A kérdező kommentje:

*szigorúan tizedespont...

# 10/21Időpont júl. 12. 22:35 Privát üzenet
1 2 3

Értesítsünk róla, ha új válasz érkezik? Válasz küldése



Kapcsolódó kérdések
Linq-ban pontosan hogyan működik a selectmany és groupby?
C# "Reverse bits" feladat, online, Mono-val miért nem működik, ami VS . NET Core 3. 0 alatt jónak tűnik?
HTML táblázat kitöltése nem működik?
Az a problémám hogy nem nagyon értem ezeket a join-os dolgokat. Hogy pontosan mi a különbség inner, left és right join között meg hogy egyáltalán hogy is működik ez?
Miért nem működik a kódom?
Miért nem működik?

Kérdések a Számítástechnika rovatbólKérdések a Programozás rovatból








Minden jog fenntartva © 2019, www.gyakorikerdesek.hu | GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | WebMinute Kft. | Kapcsolat: info (kukac) gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!