2013-02-25 4 views
2

Я хочу преобразовать строку в десятичную, а затем в строку, а затем в десятичную.Преобразуйте строку в десятичную строку в строку и обратно в десятичную.

Я пробовал:

Dim s As String = "0.7655" 

CDec(sDec).ToString("0.00") 'results in: 7653,00 
CDec(sDec).ToString 'results in: 7648 
CDec(sDec).ToString("N") 'results in: 7.653,00 

Так ни один из них не работает!

Нет ли простой функции для простого преобразования точного десятичного знака в его строковое представление снова? Кажется, слишком много работы для такой простой задачи!

Предпочтительно, не форматируя строку, потому что в этом случае я, как представляется, заранее знаю, сколько символов должно получиться в результате строки. После преобразования его в строку, я также хочу снова преобразовать его в десятичную.

+1

они действительно работают, но вам нужно указать код культуры. Быстрый поиск по SO приведет к появлению множества решений – DiskJunky

ответ

6

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

Dim s As String = "0.7655" 

Dim decValue As Decimal = Decimal.Parse(s, System.Globalization.CultureInfo.InvariantCulture) 
Console.WriteLine(decValue.ToString()) 
0

Вы должны иметь возможность получить ответ, используя метод Parse.

Dim s As String = "0.7655" 
    Dim c As Decimal = Nothing 

    c = Decimal.Parse(s) 

    Console.WriteLine(c) 

Вы можете затем использовать метод ToString преобразовать обратно в строку.