Преобразование строки C # в целое число и сравнение

#c# #asp.net

#c# #asp.net

Вопрос:

введите описание изображения здесь

привет, я получаю эту ошибку при преобразовании строк в int

 string oneamount = "1200.12366";
string twoamount = "121.11";
int x=Int32.Parse(oneamount);
int y = Int32.Parse(twoamount);

      
            if (x > y)
            {
                Console.WriteLine("okay");
            }
  

Ошибка
ввода строки в неправильном формате

Комментарии:

1. Первый вопрос: знаете ли вы, что такое целое число?

2. @MichaelRandall да, я делаю

3. Является 121.11 целым числом / Int32 ? Я могу заверить вас, что это не так, теперь следующий вопрос: какой это может быть тип?

4. как можно решить эту проблему?

5. добавлен ответ, разъясняющий комментарий @MichaelRandall

Ответ №1:

Пожалуйста, попробуйте Int32.Попробуйте проанализировать функцию. Он преобразует строковое представление числа в его 32-разрядный знаковый эквивалент целого числа. Возвращаемое значение указывает, была ли операция выполнена успешно.

Int32.Попробуйте метод синтаксического анализа

Подпись:

 public static bool TryParse (string s, out int result);
  

Пример:

 using System;

public class Example
{
   public static void Main()
   {
      String[] values = { null, "160519", "9432.0", "16,667",
                          "   -322   ", " 4302", "(100);", "01FA" };
      foreach (var value in values)
      {
         int number;

         bool success = Int32.TryParse(value, out number);
         if (success)
         {
            Console.WriteLine("Converted '{0}' to {1}.", value, number);
         }
         else
         {
            Console.WriteLine("Attempted conversion of '{0}' failed.",
                               value ?? "<null>");
         }
      }
   }
}
// The example displays the following output:
//       Attempted conversion of '<null>' failed.
//       Converted '160519' to 160519.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted ' 4302' to 4302.
//       Attempted conversion of '(100);' failed.
//       Attempted conversion of '01FA' failed.
  

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

 string oneamount = "1200.12366";
int oneAmountInt32;
string twoamount = "121.11";
int twoAmountInt32;
Int32.TryParse(oneamount, out oneAmountInt32);
Int32.TryParse(twoamount, out twoAmountInt32);

      
if (oneAmountInt32 > twoAmountInt32)
{
    Console.WriteLine("okay");
}
  

Ответ №2:

разъяснение комментария @MichaelRandall.

Целые числа — это целое число / без десятичного знака. Если вы хотите сравнить с десятичным числом, используйте double, float, decimal

вы можете преобразовать string значения в decimal для целей точности

 string oneamount = "1200.12366";
string twoamount = "121.11";
var x = Convert.ToDecimal(oneamount);
var y = Convert.ToDecimal(twoamount);

      
            if (x > y)
            {
                Console.WriteLine("okay");
            }