2013-03-18 5 views
2

Я конвертирую данные для экспорта.Удалить decimal из валюты

Файл показывает данные в центах, а не в долларах.

Так 1234.56 потребности быть напечатано как 123456

Есть ли способ сделать это с string.Format?

или является единственным решением умножить на 100?

+0

А -1, потому что .. . какие? Просто ниспровержение не помогает. – CaffGeek

+0

Почему вы хотите это сделать? –

+2

+1 (смещение вниз). Ничего плохого в этом вопросе. –

ответ

3

Вы можете использовать string.Replace (".", String.empty). Но это не так точно локализовано. Вы можете добавить в случаях, когда вы проверяете «,» также и для международной валюты. Но это то, что я сделал бы.

[Редактировать]

Кроме того, только нашел это: http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

«N» числовой спецификатор позволяет изменить символ, используемый для разделения целой и десятичной части.

<code> 

decimal num = 123.456m; 
NumberFormatInfo ci = CultureInfo.CurrentCulture.NumberFormat; 
ci.CurrencyDecimalSeparator = " "; // You can't use string.Empty here, as it throws an exception. 
string str = num.ToString("N", ci).Replace(" ", string.Empty); 

</code> 

Нечто подобное должно делать трюк и локализовано!

+0

Отстой, что вы не можете использовать пустую строку в качестве разделителя, но это работает очень хорошо. Я должен был создать новую культуру, хотя существующие были доступны только для чтения. – CaffGeek

+0

Да, я отредактирую сообщение, чтобы включить, что вы не можете использовать пустой разделитель. –

0

Если это так просто, просто сделать String.Replace('.','');

2

Это проблема рендеринга. Конечно, умножение на 100 для получения центов будет выполнять эту работу.

Соединенные Штаты используют десятичную точку для отделения долларов от центов. Но не все страны делают это. Решение «умножить на 100» подходит только для валют, которые используют 100 дробных единиц для представления единого целого. (Не случай в Японии йен.)

+0

Вот почему я хочу решение, которое НЕ умножается на 100, поэтому я искал решение 'string.Format'. – CaffGeek

+1

Проверьте мое решение на дне; он локализован и чист. –

0

, если вы знаете, что значения всегда будет иметь 2 десятичные позиции, то это сделать это очень просто

var strVar = 1234.56; 
var somevalues = string.Format("{0:######}", strVar * 100); 

output = 123456