Kezdőoldal » Számítástechnika » Programozás » Az új VS 2019 másképp működik...

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

Figyelt kérdés

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!



2019. júl. 12. 19:54
1 2 3
 1/21 anonim ***** válasza:
100%

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)

2019. júl. 12. 19:59
Hasznos számodra ez a válasz?
 2/21 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.

2019. júl. 12. 20:12
 3/21 anonim ***** válasza:
54%

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

Eleve a Visual Studionak semmi köze hozzá.

2019. júl. 12. 20:14
Hasznos számodra ez a válasz?
 4/21 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.

2019. júl. 12. 20:18
 5/21 anonim ***** válasza:
54%
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)
2019. júl. 12. 20:39
Hasznos számodra ez a válasz?
 6/21 anonim ***** válasza:

"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.

2019. júl. 12. 20:44
Hasznos számodra ez a válasz?
 7/21 anonim ***** válasza:

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();

}

}

}

2019. júl. 12. 22:05
Hasznos számodra ez a válasz?
 8/21 anonim ***** válasza:

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

2019. júl. 12. 22:26
Hasznos számodra ez a válasz?
 9/21 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.

2019. júl. 12. 22:34
 10/21 A kérdező kommentje:
*szigorúan tizedespont...
2019. júl. 12. 22:35
1 2 3

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | 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!