2015-09-28 4 views
2

Я пытаюсь взять строку, которая может содержать или не содержать символ '.' до x количества символов, удаляющих «десятичную точку». результат в конечном итоге будет преобразован в целое число со знаком. Мне также всегда понадобится десятичное число 1/10 (то есть 10 станет 100, 1 станет 10 и т. Д.). Я хотел бы просто форматировать строку без преобразования в целое число до самого конца.Строка формата с десятичной цифрой

Пример

если моя входящей строка

9,86 Я хочу, чтобы 98 в виде строки (я не забочусь о округлении или что-нибудь)

если я получаю 9 Я хочу 90

если я получаю -100 я хочу -1000

если я получаю -95.353 я хочу -953

ответ

2
string.Format("{0:d}", (int)9.015*10); 

Если вы хотите округленный результат, замените отлитого

Edit: Но я пропустил «строку» часть. Многословный код ниже

var input = "9.86"; 
var len = input.IndexOf('.'); 
var result = ""; 
if (len > 0) 
{ 
    result = input.Substring(0, len); 
    result += input.Substring(len + 1, 1); 
} 
else 
{ 
    result = input + "0"; 
} 
+0

С точки зрения производительности. Я бы предположил, что быстрее разобрать строку в два раза, чем вызовы indexOf и Substring, чтобы сохранить строку. –

1

Если вы существенно умножения на десять числа, содержащееся в строке, и сбросив знаки после запятой после первого, то вы бы лучше заливки строки как десятичные, а затем делать преобразование и литье это число как целое число. В противном случае вам придется написать большой набор математических правил о том, как изменить вашу строку на основе определенного типа ввода.

 string[] input = {"9.86", "9", "-100", "-95.3"}; 
     List<int> intNums = new List<int>(); 
     foreach (string s in input) 
     { 
      decimal number; 
      if (Decimal.TryParse(s, out number)) 
      { 
       number = number * 10; 
       intNums.Add((int)number); 
      } 

     } 

Выход: [0] 98 INT [1] 90 INT [2] -1000 INT [3] -953 INT

+0

Это работает, однако, я работаю VS 2008, .net 3.5 и немного изолирован. У меня нет метода Decimal.TryParse – Angryjames

+0

Метод TryParse - это действительно проверка правильного ввода. Вы можете пропустить это и просто перевести в десятичное число: десятичное число = Convert.ToDecimal (s). –

Смежные вопросы