Получить символы за точкой в ​​двойном - PullRequest
0 голосов
/ 07 декабря 2010

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

В целях отображения я хочу разделить double на две части: часть перед точкой и первые две цифры после точки. Мне нужно это как string. Целевой язык: C #.

Например: 2345.1234 становится "2345" и "12"

Я знаю, как получить часть до точки, это просто:

Math.Floor(value).ToString()

... но как правильно получить роль "за точкой"? Должен быть какой-то хороший способ сделать это простым способом ...

Тогда я не могу думать ни о чем другом:

Math.Round(100 * (value - Math.Floor(value))).ToString("00");

Я уверен, что есть лучший способ, но я просто не могу об этом думать. Кто-нибудь?

Ответы [ 4 ]

4 голосов
/ 07 декабря 2010

Регулярные выражения (регулярные выражения), вероятно, вам лучше всего делать ставки, но использование оператора мода может быть другим ценным решением ...

  stuffToTheRight = value % 1

Приветствия.

4 голосов
/ 07 декабря 2010
//
//Use the Fixed point formatting option.  You might have a bit more work to do 
//if you need to handle cases where "dot" is not the decimal separator.
//
string s = value.ToString("F2", CultureInfo.InvariantCulture);
var values = s.Split(".");
string v1 = values[0];
string v2 = values[1];

См. Эту ссылку для получения дополнительной информации о форматировании: http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

Вот некоторый непроверенный код, который пытается учитывать текущую культуру:

//
//Use the Fixed point formatting option.
//
string s = value.ToString("F2", CultureInfo.CurrentCulture);
var values = s.Split(CultureInfo.NumberFormat.NumberDecimalSeparator);
string v1 = values[0];
string v2 = values[1];
0 голосов
/ 07 декабря 2010

В одной строке это будет:
string[] vals = value.ToString("f2").Split(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator.ToCharArray());

vals[0]: до точки.
vals[1]: после точки.

0 голосов
/ 07 декабря 2010
use regex ".[0-9][0-9]"
...