Проверьте десятичную цифру

Я хочу проверить, имеет ли десятичное число значение в 4-й значащей цифре.

//3 Significant figures
var val = 1.015;

//4 Significant figures
var val2 = 1.0155;

Как я могу проверить, чтобы увидеть, когда есть значение в 4-м значащем месте.

Я хочу условно отобразить 3 или 4 десятичных знака в зависимости от того, есть ли ненулевое значение в 4-м месте.

Каков наилучший способ сделать это?

Будет ли этот метод работать?

if((val * 10000) % 10 != 0) ...

4 ответа

Решение

Глупый ответ будет: найти местоположение . в вашей строке, а затем проверьте расположение +4.

Более серьезным было бы взглянуть на варианты двойного форматирования:)

Вы можете использовать это форматирование двойного

//       using the   F4:                    1054.3224

и затем, если последний индекс вашей строки равен 0, вырежьте его, используя подстроку.


По состоянию на ваше последнее редактирование (if((val * 10000) % 10 != 0) ...), да, это должно работать... Судхакар предложил то же самое в своем ответе.

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


Перейти с решением Маркса, простейшее, я думаю.

double d = 3.40;
Console.Out.WriteLine("d 0.0: {0}", d);                     // 3.4
Console.Out.WriteLine("d 0.0: {0}", d.ToString("0.0"));     // 3.4
Console.Out.WriteLine("d 0.00: {0}", d.ToString("0.00"));   // 3.40
Console.Out.WriteLine("d 0.0#: {0}", d.ToString("0.0#"));   // 3.4

Обратите внимание, что если у вас есть только 3 или 4 цифры после ., значение по умолчанию будет обрезано и удалено, как вы можете видеть, если первый вывод выше.

Вы можете сделать это с помощью пользовательской строки формата:

double d = 1.2340;
string strDouble = d.ToString("0.000#");

Чтобы узнать о форматировании выходных данных, ознакомьтесь с этим http://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx

Чтобы просто проверить, есть ли 4 или более значащих цифр, которые вы можете сделать

 if (inputString.Split('.')[1].Length > 3)

Конечно, это не делает никакой проверки ошибок и может легко вызвать некоторые исключения, но нет необходимости загромождать мой ответ некоторыми базовыми оценками и проверками недействительности.

1. Умножьте значение на 1000 а затем сделать (value%10) модификация 10 для получения последней цифры в 3rd significant значение.

Пример: (3-й значимый)

        var val = 1.015;
        int val1=Convert.ToInt32(val * 1000);
        Console.WriteLine(val1 %10); 

Output: 5

2. Умножьте значение на 10000 а затем сделать (value%10) модификация 10для получения последней цифры в 4 significant значение

Пример: (4-е значимое)

        var val = 1.0157;
        int val1=Convert.ToInt32(val * 10000);
        Console.WriteLine(val1 %10);

Output: 7
Другие вопросы по тегам