Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
1

Как объявить переменную, принимающую дробные значения

04.01.2015, 01:42. Показов 3494. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Написал код.

VB.NET
1
2
3
4
5
6
7
8
9
  
        Dim intInfo1 As Integer
        Dim intInfo2 As Integer
           
        intInfo1 = 3.5              '3.5
        intInfo2 = 3.4              '3.4
 
        txtInfo1.Text = intInfo1    '4
        txtInfo2.Text = intInfo2    '3

Проблема в том, что если целочисленной переменной Integer присвоить значение равное "3.4" к примеру, то оно его обнулит как "3".
А если целочисленной переменной Integer присвоить значение равное "3.5" или больше, то оно его обнулит не как "3", а как "4".

У меня сразу два вопроса: почему так происходит, и как это исправить?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2015, 01:42
Ответы с готовыми решениями:

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

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

Как объявить переменную
Или так(тоже не получается) namespace имя { public partial class Form1 : Form { ...

Как объявить переменную?
curl_easy_setopt(curl, CURLOPT_URL, url); Как объявить переменную? Этот код находится внутри...

7
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
04.01.2015, 01:51 2
SeregaBarmaley, тут нужен Double или Single
0
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
04.01.2015, 01:56  [ТС] 3
А почему оно обнуляет его до следующего числа? По идее не должно быть так.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
04.01.2015, 02:00 4
SeregaBarmaley, смотря что именно ты хочешь исправить. Если хочешь получать ошибки компиляции, то включи Option Strict в свойствах проекта. Если хочешь "исправить" правила округления, то используй методы класса Math: Floor, Ceiling или Round
0
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
04.01.2015, 02:03  [ТС] 5
Буду изпользовать тогда переменную Single. Какой у неё префикс не подскажешь?

OwenGlendower, мне не понятно почему при изпользовании переменной Integer идёт округление после 0.5 в большую сторону?
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
04.01.2015, 02:07 6
Префикс?
Там все так же как и с интежером.

VB.NET
1
Dim S As Single = 0.5
А если нужно округлять до целых, отбрасывая дробную часть, то стоит попробовать способы OwenGlendower
0
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
04.01.2015, 02:19  [ТС] 7
VB.NET
1
2
3
4
5
6
7
8
        Dim intInfo1 As Integer
        Dim intInfo2 As Integer
           
        intInfo1 = Fix(3.5)         '3
        intInfo2 = Fix(3.4)         '3
 
        txtInfo1.Text = intInfo1    '3
        txtInfo2.Text = intInfo2    '3
В общем я изправил ошибку. Я не стал менять тип переменной, я изпользовал функцию Fix, которая отбрасывает дробные значения.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
04.01.2015, 11:25 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от SeregaBarmaley Посмотреть сообщение
мне не понятно почему при изпользовании переменной Integer идёт округление после 0.5 в большую сторону?
Ты сам себе ответил. Язык выполняет округление до целого. Если тебя не устраивают правила языка и тебе нужно отбросить дробную часть, то используй Math.Ceiling или Math.Truncate.

Добавлено через 9 часов 4 минуты
SeregaBarmaley, для сведения - это поведение описано в спецификации VB.NET:
8.3 Numeric Conversions
...
If the source is Single, Double, or Decimal, the source value is rounded up or down to the nearest integral value, and this integral value becomes the result of the conversion. If the source value is equally close to two integral values, the value is rounded to the value that has an even number in the least significant digit position. If the resulting integral value is outside the range of the destination type, a System.OverflowException exception is thrown.
Обрати внимание что используется т.н. банковское округление. То есть 3.5 и 4.5 будут округлены к 4 т.к. это ближайшее четное.
0
04.01.2015, 11:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2015, 11:25
Помогаю со студенческими работами здесь

Как объявить глобальную переменную
При объявление Public ничего не происходит Public Sub Form1_Load(ByVal sender As System.Object,...

Как правильно объявить переменную ?
Как правильно объявить переменную, периодически изменяющуюся от "о" до "1" следующим циклом :...

Как объявить глобальную переменную?
Как объявить глобальную переменную?у меня 16 блоков и нужно чтобы она была доступна всем блокам ...

Как объявить глобальную переменную?
Угораздило установить Офис2003... :-/ неужели нельзя больше использовать необъявленные...

Как объявить переменную глобально?
здравствуйте, в книге шилдта есть такой код #include <iostream> using namespace std; void...

Как объявить глобальную переменную?
Вобщем проблема у меня следующая, нужно увидеть переменную из одной формы в другой!!! заранее...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru