2015-04-30 5 views
-1

Эй, ребята, я это число, которое позволяет говорить 1.5 Я хочу, чтобы это было 1,50C# номер знака после запятой исправить

private double FixDecimals(double data) 
    { 
     double tmpDouble = Convert.ToDouble(String.Format("{0:0.00}", data)); 
     return tmpDouble; 
    } 

Это реальная функция и не кажется, что это будет работать. Пожалуйста, передайте 1.5 и скажите мне, что вы получаете.

+0

Почему downvote? Похоже, это вполне разумный вопрос, когда ОП продемонстрировал попытку решения и не понимает, почему попытка не сработала. –

+1

Я не спустил вниз, но, возможно, OP мог сказать нам больше, чем «это, похоже, не работает». Вызывает ли это исключение, создает ли нежелательный результат ... и т. Д. – ManEatingCheese

+0

Я не распространяю свой исходный код, я прошу простую функцию, которая способна это сделать. Ясно, что это не работает. Я пытаюсь сделать двойной показ 2 десятичных знака. – TheCryptKeeper

ответ

1

Вам не нужно звонить ToString на variable:

String.Format("{0:0.00}", variable) 

Предполагая variable имеет тип double, variable.ToString() форматирования двойной с "G" спецификатор формата, что дает вам 1.5. Затем значение передается string.Format.


Update после вопроса редактирования:

переменная типа double не имеет реального формата, за исключением, когда преобразуется в string. Из-за этого функция FixDecimals на самом деле не имеет смысла.

Что касается переменных типа double, то 1.5 равно 1.5000. Если вы хотите контролировать, как это значение отображается, сначала преобразуйте его в string.

1

взгляд на примере вам не нужно .ToString() при использовании string.Format

var variable = 1.5; 
var frmtString = String.Format("{0:0.00}", variable); 

frmtString = 1.50

Это также дало тот же результат

var mydouble = 1.5; 
var frmtString = String.Format("{0:N}", mydouble); 
0

A double - это двойное число, и если у вас есть двойник, равный 1,5, он эквивалентен вычислительному эквиваленту 1,50 (и, тем не менее, много дополнительных нулей для добавления). Поэтому, когда вы просматриваете его в отладчике, он берет double и преобразует его в читаемую строку с использованием форматирования ToString по умолчанию.

Как и другие ответы, если вы хотите распечатать его, то вы можете добавить десятичные разряды, но нет необходимости (и не работает), чтобы добавить их в код, как вы пытаетесь сделать путем преобразования дважды в строку и обратно в двойную снова с «дополнительными знаками после запятой».

+0

Моим решением было data.toString ("0.00") – TheCryptKeeper

+0

@TheCryptKeeper вы можете показать свои данные «Solution» .toString («0.00»); Недопустимый синтаксис - это опечатка в 'toString' – MethodMan

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