2012-05-03 2 views
-1

Я использую следующий код:Преобразование проложенный строку в число в C#

string new = old.Substring(0,2).TrimStart('0') + "." + old.Substring(2,2).TrimStart('0'); 

преобразовать следующим образом:

0101 >> 1.1 
99.10 >> 99.1 
99.01 >> 99.01 

Проблема заключается в том, что следующее преобразование не работает правильно:

0100 >> 1.0 

Есть ли простой способ, я мог бы исправить это. Я не понимаю, почему он неправильно конвертируется. Для меня важно иметь «.0» после этого. Когда я запускаю все, что я вижу, это «1.»

+0

Действительно ли он компилируется? – BlackBear

+0

посмотрите на это: http://stackoverflow.com/questions/711264/most-efficient-way-to-convert-a-string-to-2-decimal-places-in-c-sharp – Zaki

+1

Ваши переводы кажутся противоречивы. Как 0101 перевести на 1.1? не должно быть 1,01? Вы принимаете 2 десятичных знака? –

ответ

1

TrimStart всегда удаляет ВСЕ 0, с которых начинается строка. Таким образом, ваша вторая часть заканчивается:

"00".TrimStart('0') 

, который всегда будет давать пустую строку.

Попробуйте это вместо того, чтобы гарантировать, что вы всегда получите, что 0:

string new = old.Substring(0,2).TrimStart('0') + "." + 
      old.Substring(2,2).TrimStart('0').PadLeft(1, '0'); 
+0

Спасибо. Это работает хорошо. Я буду отмечать как правильный. –

0

Можете ли вы назвать Int32.TryParse(), а затем разделить на 100?

string s = "0101"; 
int n; 
if(int.TryParse(s, out n)) 
{ 
    decimal d = n/100M; 
    string x = d.Format("f2"); 
} 
Смежные вопросы