Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
abbat81
29 / 29 / 2
Регистрация: 20.07.2011
Сообщений: 390
1

Арифметика с НЕ-целыми числами.

21.07.2011, 14:10. Просмотров 900. Ответов 9
Метки нет (Все метки)

Наткнулся на проблему.

Арифметика работает только с цельными числами.
Но нужно работать с числами нецелыми.

Перепробовал конвертировать в String, Double, Integer.... В подстказке указывает на проблему конвертации в Double, но все никак не выходит.

1) Например: 2,35+3,25
2) Ограничить дробную часть до 2 символов.

Как исправить, чтобы содержимое поля TextBox5.Text (sum) со значением 3,25 было обработано.



vb.net
1
2
3
4
5
Dim i As String = Convert.ToSingle(TextBox1.Text)
Dim sum = Convert.ToString(TextBox5.Text)
Dim points As String = 36 / i * (sum * 100)
 
Label1.Text = points
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2011, 14:10
Ответы с готовыми решениями:

Сформировать квадратную матрицу и заполнить случайными целыми числами
Получить квадратную матрицу A размером NN (N – случайное число от 5 до 10),...

Заполните двумерный массив отрицательными и положительными целыми случайными числами
Задания 1. 1.Заполните двумерный массив отрицательными и положительными целыми...

Создать стек со случайными целыми числами. Удалить из него записи с четными числами.
Создать стек со случайными целыми числами. Удалить из него записи с четными...

с целыми числами.
97) Дано натуральное число n. Переставить местами первую и последнюю цифру...

Арифметика с 4 байтными числами
положим у меня есть код MOV AX,1000h MOV BX,FFF7 IMUL BX в итоге получаю в...

9
gitarillo
728 / 528 / 45
Регистрация: 17.06.2010
Сообщений: 1,027
Записей в блоге: 1
21.07.2011, 14:20 2
abbat81, Объявляешь переменную как строковую и ей присваиваешь вещественное значение. я про строку Dim i As String = Convert.ToSingle(TextBox1.Text)
а переменная sum у тебя становится строковая, хотя сначала она variant.
vb.net
1
2
3
4
Dim i As Single = Convert.ToSingle(TextBox1.Text)
Dim sum = Convert.ToSingle(TextBox5.Text)
Dim points As String = 36 / i * (sum * 100)
Label1.Text = points
надо наверно еще с разделителем целой и дробной части поработать. То есть определить какой символ используется в качестве него.
0
abbat81
29 / 29 / 2
Регистрация: 20.07.2011
Сообщений: 390
21.07.2011, 14:31  [ТС] 3
В строке:
vb.net
1
dim sum = Convert.ToSingle(TextBox5.Text)
Выдало ошибку:
Input string was not in a correct format.

Тоесть:
vb.net
1
2
3
4
Dim i As Single = Convert.ToSingle(TextBox1.Text)
Dim sum = Convert.ToSingle(TextBox5.Text)
Dim points As String = 36 / i * (sum * 100)
Label1.Text = points
0
gitarillo
728 / 528 / 45
Регистрация: 17.06.2010
Сообщений: 1,027
Записей в блоге: 1
21.07.2011, 14:36 4
abbat81, объяви как сингл ее
0
Eugene22
_
2351 / 1224 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
21.07.2011, 14:45 5
abbat81, поскольку не все строки могут адекватно переведены в числа, лучше использовать TryParse
vb.net
1
2
3
4
If Single.TryParse(TextBox1.Text, i) Then
'тут все остальные действия, если преобразование прошло успешно 
.....
End If
0
abbat81
29 / 29 / 2
Регистрация: 20.07.2011
Сообщений: 390
21.07.2011, 14:45  [ТС] 6
Обьявил, но к сожалению не прошло - "не тот формат":
Input string was not in a correct format.

Сечас код выглябит так:

vb.net
1
2
3
4
 Dim i As String = Convert.ToSingle(TextBox1.Text)
        Dim sum As Single = Convert.ToSingle(TextBox5.Text)
        Dim points As Single = 36 / i * (sum * 100)
        Label8.Text = points
0
gitarillo
728 / 528 / 45
Регистрация: 17.06.2010
Сообщений: 1,027
Записей в блоге: 1
21.07.2011, 14:51 7
abbat81, Первая строка у тебя опять неверно записана. а по поводу ошибки конвертирования посмостри что ты вводишь в текстбокс 3,25 или 3.25
1
abbat81
29 / 29 / 2
Регистрация: 20.07.2011
Сообщений: 390
21.07.2011, 15:12  [ТС] 8
Цитата Сообщение от gitarillo Посмотреть сообщение
abbat81, Первая строка у тебя опять неверно записана. а по поводу ошибки конвертирования посмостри что ты вводишь в текстбокс 3,25 или 3.25
gitarillo Спасибо!
Уххх ... оказывается работает, но только на рус. раскладке, то есть с запятой.

Теперь как разрешить точку, что при англ. раскладке, которая на номерной клавиатуре.
И как ограничить ввод в Text.box5.text до формата : "999,99" ?

Добавлено через 6 минут
Цитата Сообщение от Eugene22 Посмотреть сообщение
abbat81, поскольку не все строки могут адекватно переведены в числа, лучше использовать TryParse
vb.net
1
2
3
4
If Single.TryParse(TextBox1.Text, i) Then
'тут все остальные действия, если преобразование прошло успешно 
.....
End If
Переменная i -цельная, тоесть не в ней загвоздка, а в переменой sum, на которую натыкаемя с ошибкой, а если ее не обьявлять до уловия If Single.TryParse то соответственно - такая переменная не обявлена, напр "Еще Не обьявлена SUM":

vb.net
1
2
3
4
5
6
If Single.TryParse(TextBox5.Text, sum) Then
Dim i As Single = Convert.ToSingle(TextBox1.Text)
Dim sum = Convert.ToSingle(TextBox5.Text)
Dim points As String = 36 / i * (sum * 100)
Label1.Text = points
end if
И не решается проблема с форматом, если натыкаемся до парсера на ту переменную sum, ведь в нее вбили дробное число.
0
gitarillo
728 / 528 / 45
Регистрация: 17.06.2010
Сообщений: 1,027
Записей в блоге: 1
21.07.2011, 15:15 9
Цитата Сообщение от abbat81 Посмотреть сообщение
Теперь как разрешить точку, что при англ. раскладке, которая на номерной клавиатуре.
Нужно сначала определить что система использует в качестве целочисленного разделителя. Этот вопрос решался мною тут
По второму вопросу -

Не по теме:

лучше в отдельной ветке задай вопрос. Кашу на форуме не будем разводить.

1
Bazzy
191 / 184 / 14
Регистрация: 09.02.2011
Сообщений: 458
21.07.2011, 15:43 10
Eugene22 прав абсолютно... только можно еще сделать вот так:
vb.net
1
2
3
4
        Dim v1 As Single = 0
        Dim v2 As Single = 1.00001
        If Not Single.TryParse(TextBox2.Text.Replace(".", ","), v1) Then Single.TryParse(TextBox2.Text.Replace(",", "."), v1)
        TextBox2.Text = v2 + v1
Чтобы не думать о том какой стандарт на данном компьютере
0
21.07.2011, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2011, 15:43

Работа с целыми числами
Народ подскажите такой вопрос . Есть натуральное число порядка N . Нужно...

Работа с целыми числами
var y,z:integer; k:integer; begin write('k(введите число от 8 до 22)=');...

Массив с целыми числами
дан массив состоящий из 100 целых чисел. Вывести все числа которые встречаются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru