C # Преобразование строки в int (с округлением)

2

Какой самый простой способ получить строку со значением "76.10" в int, округленном до 76?

Я пробовал несколько разных способов использования Convert.ToInt32 и Decimal, но я не могу понять, что это правильно?

Изменить: здесь код Jon помог мне:

            decimal t = Math.Round(decimal.Parse(info.HDDStatus));
            int v = (int)t;
  • 0
    я уверен, что это дурак - Math.Round - твой ответ OP
  • 0
    ваш код?.....
Теги:

2 ответа

5
Лучший ответ

Самый простой способ - использовать Decimal.Parse для его синтаксического анализа, а затем Math.Round (или потенциально Math.Floor в зависимости от того, как вы хотите обрабатывать цифры, такие как "76.7" ), чтобы округлить его. Затем преобразуйте в целое число только путем литья.

Я бы предложил использовать decimal, а не double, поскольку вы по сути говорите о десятичном числе (как это показано в тексте).

Точный метод анализа будет зависеть от культуры - ожидаете ли вы, что текст "76,10" появится в европейском контексте или будет всегда использоваться ". как десятичная точка, например?

  • 0
    Спасибо за объяснение, я добавил код, который я использую из этого в исходный вопрос, он работает, но это лучший способ?
  • 0
    @JoeBeez: В зависимости от того, как именно вы хотите округлить значение, и как именно вы хотите, чтобы оно было проанализировано, да. Подумайте о разных культурах и ценностях, таких как «76,6» и «76,5».
2
  • Сначала преобразуйте его в двойное и используйте Math.Floor()

  • Сначала извлеките подстроку (76).

 

string s = "76.7"; 
int n = int.Parse(s.Substring(0, s.IndexOf('.')));
  • 0
    Это также работает для меня, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню