Проверьте десятичную цифру
Я хочу проверить, имеет ли десятичное число значение в 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