2013-11-26 17 views
1

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

//3 Significant figures 
var val = 1.015; 

//4 Significant figures 
var val2 = 1.0155; 

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

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

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

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

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

связаны: http://stackoverflow.com/q/16083666/380384 – ja72

ответ

0

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

Чем серьезнее будет, посмотрим на double formatting options :)

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

//  using the F4:     1054.3224 

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


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

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


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

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 digts после ., по умолчанию будет урезана и удалены, как вы можете увидеть, если первый выход выше.

1

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

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

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

Output: 5 

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

Пример: (четвёртый значительный)

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

Output: 7 
1

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

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

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

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

1

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

double d = 1.2340; 
string strDouble = d.ToString("0.000#"); 
Смежные вопросы