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!
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)
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.
Nem működik másképp.
Eleve a Visual Studionak semmi köze hozzá.
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.
"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.
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();
}
}
}
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
É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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!