Нахождение десятичного значения на основе входного номера - PullRequest
0 голосов
/ 28 сентября 2019

Если у меня есть десятичное число number = 0.26579
Мой ввод int = 3
значение, которое я хочу получить из десятичного числа, равно 5. Есть ли решение, которое я могу найти это значение?

private decimal decimalNumber = 0.26579
private int decimalPosition =3;
private int decimalPositionValue = 0;

public void getdecimalPositionValue(){
// the result I want is 5 which is decimalPosition = 3 and get it in decimalPositionValue 
}

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Вы можете попробовать это:

using System.Globalization;

static public int GetDecimalDigit(this decimal value, int position)
{
  if ( position <= 0 )
    throw new ArgumentOutOfRangeException();
  char separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0];
  var parts = value.ToString().Split(separator);
  if ( parts.Length != 2 )
    throw new ArgumentOutOfRangeException();
  position--;
  if ( position > parts[1].Length )
    throw new ArgumentOutOfRangeException();
  return int.Parse(parts[1].Substring(position, 1));
}

static void Main(string[] args)
{
  var value = 0.26579m;
  int digitDecimal = value.GetDecimalDigit(3);
  Console.WriteLine(digitDecimal);
  Console.ReadKey();
}
0 голосов
/ 28 сентября 2019

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

также убедитесь, что десятичная дробь имеет десятичную часть

  using System;

public class Program
{
    public static void Main()
    {
        decimal decimalNumber = 0.26579M;
        int decimalPosition =3;
        int decimalPositionValue = 0;
        Console.WriteLine(getdecimalPositionValue(decimalNumber, decimalPosition));
    }



    public static int getdecimalPositionValue(decimal num, int pos)
    {
    return int.Parse(num.ToString().Split('.')[1].Substring(pos -1, 1));
    }
}
...