Професионална програма
Loading...
+ Нов въпрос
ivan.petkov.923 avatar ivan.petkov.923 5 Точки

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

Здравейте,

Искам да попитам как се процедира при числата с плаваща запетая...

Това което правя е да извикам namespace_овете:
using System.Threading;
using System.Globalization;

вътре в Main() метода пиша това:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

и обаче ако въведа 5,6 го приема като 56 и трябва да напиша и това...

float а = float.Parse(Console.ReadLine().Replace(",", "."));

 

Има ли друг по оптимизиран вариант или трябва на всеки console.readline() да добавям и replace....

 

Поздрави,

Иван

 

Тагове:
0
Programming Basics
milen8204 avatar milen8204 296 Точки

В InvariantCilture плаващата запетая е ".", ако искаш да ти приема ","  като плаваща запетая просто нагласи да си с BG куплтура. Thread.CurrentThread.CurrentCulture = new CultureInfo("bg-BG"); И вкларай using System.Threading;
using System.Threading.Tasks; using System.Collections.Generic;

float а = float.Parse(Console.ReadLine().Replace(",", "."));

не трябва ли да е:

float а = float.Parse(Console.ReadLine().Replace(',', '.');

тоест аргументите, които приема да са char, а не string?

При мен работи, като подам 5,6 ми връща double 5.6 в инжариантна култура.

 

0
beBoss avatar beBoss 507 Точки

Няма друг вариянт. Това е начина. Трябва да се съобразяваш с регионалните настройки. И в този случай е най-добре понеже, точка се очаква и ако е въведена такава е ок, а ако е запетая, я прави точка и така.

 

@milen8204, с двойни кавички трябва да е.

2
milen8204 avatar milen8204 296 Точки

@beBoss Аха сега видях във Visio-то, че може и с двете има и със string и с char, методите са 2-ва :) Мерси.

2