Member 13044689 Ответов: 1

Проблема с просмотром этого номера ? 2.050.000


Здравствуйте у меня есть этот номер 2.050.000 его не показывают в таблице я использую float
проблема со второй точкой 2.050 это нормально, но эта 2.050.000 не будет работать ?
такие числа как 65.233 работают нормально но это число не отображается
есть ли какой-нибудь тип данных, который я могу использовать, чтобы заставить его работать??

Что я уже пробовал:

я попробовал bigint но не получилось

Wessel Beulink

Вы используете точки?

Диапазон поплавков составляет: -3,4 × 1038 до +3,4 × 1038. Так что 2.050.000-это не проблема. Но я думаю, что у вас есть точки в вашем числовом. Попробуйте удалить, если это так.

Jochen Arndt

"2.050.000" не является допустимым текстовым представлением числа, которое может быть преобразовано в значение с плавающей запятой с помощью общих функций преобразования текста в число.

В локализациях, где десятичная точка не является точкой (например, запятая), точки могут быть тысячными разделителями. В вашем примере число будет тогда "2.050.000, 0".

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

Но без знания ваших данных и локализации вам будет трудно помочь.

1 Ответов

Рейтинг:
1

OriginalGriff

Беда в том, что" 2.050.000 " - это не число с точки зрения C#.
Хотя". "допускается в качестве" разделителя тысяч " на нескольких языках, C# вообще не использует их и настаивает на том, чтобы число записывалось как "nnnnnn.dddd", где "nnnnnn" - целая часть, а "dddd" - "дробная" часть.
Поэтому, если ваше число должно быть 2050000, то запишите его как 2050000.0.
Если у вас есть введенные пользователем значения, включающие разделитель тысяч, используйте double.TryParse, чтобы преобразовать его:

двойной d;
иначе, если один операнд строкового = "2,050,000"; // мой язык использует запятую в качестве разделителя
если (!двойной.TryParse(userInput, out d))
{
Приставка.WriteLine("не распознан");
}
ещё
{
Приставка.WriteLine(d);
}

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


Member 13044689

на самом деле это код для суммирования между столбцами и double.parse не работает какая-то помощь

если (электронная.Подряд.RowType == DataControlRowType.Строкаданных)
{
если ((например.Подряд.Состояние rowstate &амп; DataControlRowState.Редактировать) и gt; 0)
{
строка val1 = e. Row. Cells[13]. Text;
строка val2 = e. Row. Cells[14]. Text;
строка val3 = e. Row. Cells[15]. Text;
строка val4 = e. Row. Cells[16]. Text;
Label lblTotal = (Label)e. Row. Cells[12]. FindControl ("Label20");
поплавок _val1, _val2, _val3, _val4;

плыть.Метод tryparse(val1, из _val1);
плыть.Метод tryparse(val2, из _val2);
плыть.Метод tryparse(val3, из _val3);
плыть.Метод tryparse(val4, из _val4);
плавающая сумма = _val1 + _val2 + _val3 + _val4;
lblTotal.Текст + = сумма.Метод toString();


в столбце итого не отображается число

OriginalGriff

Итак, что же именно находится в переменных val1, val2 и sum? Используйте отладчик и проверьте.
Почему ты не пользуешься поплавком?TryParse возвращает значение, чтобы проверить, были ли данные действительным числом?

Member 13044689

не имеет значения какое значение в нем может быть пустым или нет но проблема в том как я могу суммировать используя 2 точечное значение

пример: предположим, что val1 = 2,050,000
val2 = 3,000,000
сумма = 5,050,000 ----------> Но нет никакого значения, появляющегося в sum col

и да, он работает хорошо, когда я пробую любые числа со значением 1 точка, так что вы можете помочь?

OriginalGriff

Это не точки, это запятые - то есть тысячи разделителей.
При условии, что ваша культура и локаль настроены на их принятие, TryParse будет работать.
Он имеет перегрузку, которая позволяет вам указать культурную информацию:
https://msdn.microsoft.com/en-us/library/0xh24xh4(v=против 110). aspx
Возможно, вам стоит этим воспользоваться.

Используйте отладчик, проверьте, что именно происходит. В данный момент Вы догадываетесь, в чем проблема, а не смотрите на доказательства.