#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");
}