powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос
16 сообщений из 16, страница 1 из 1
Вопрос
    #36711290
ДаркТМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.
Ударило мне в голову - мол хочу изучить VBA, поставил себе цель, сел изучать, купил книжку итд.
И вот в конце одной из первых глав в книжке такое задание.
авторДля закрепления материала этой и предыдущей глав советуем читателю написать программу, позволяющую определить значения, для которых выполняется условие CInt(x) = Int(x) = Fix (x) = Round (x). переменная x принимает значения -1.8 , -1.25 , 1.27, 1.68

Вот код того, что я сделал
авторSub aaa()
Dim c As Single
Dim x As Single
Dim a As Boolean
x = 1.27
a = CInt(x) = Int(x) And Round(x) = Fix(x) And Round(x) = Int(x)
c = CInt(x)
MsgBox (a)
End Sub

вопрос такой, почему при прогонке программы пошагово и наводе курсора на функции , при расчете переменной "а" - все выдают сообщения типа CInt (x) = 1 итд. Все, кроме функции Round. Расчитывает программа правильно вроде как, но вот этот Раунд меня напрягает. Это нормально или я что то где то накосячил*?
И еще вопрос - в чем отличие функций CInt от функции Int
...
Рейтинг: 0 / 0
Вопрос
    #36711301
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМ

И еще вопрос - в чем отличие функций CInt от функции Int
Int, Fix Functions (Visual Basic)
...
Рейтинг: 0 / 0
Вопрос
    #36711305
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМ,
Порбуйте вот так
Код: plaintext
a = (CInt(x) = Int(x)  = Round(x) = Fix(x))
...
Рейтинг: 0 / 0
Вопрос
    #36711310
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМ
И еще вопрос - в чем отличие функций CInt от функции Int

У вас пытливый ум?
Выполните пошагово
Код: plaintext
1.
Debug.Print Int( 123456789 . 55 )
Debug.Print CInt( 123456789 . 55 )

ДаркТМУдарило мне в голову - мол хочу изучить VBA, поставил себе цель, сел изучать, купил книжку итд.

Это хорошо, но прочтите пожалуйста это и это
...
Рейтинг: 0 / 0
Вопрос
    #36711316
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМВсе, кроме функции Round. Расчитывает программа правильно вроде как, но вот этот Раунд меня напрягает
Среда принимает решения, просчитывать или не просчитывать подсказку, основываясь на одной ей ведомых принципах. Иногда просчитывает даже пользовательские функции. Ничего страшного.
...
Рейтинг: 0 / 0
Вопрос
    #36711588
ДаркТМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-dukeДаркТМ,
Порбуйте вот так
Код: plaintext
a = (CInt(x) = Int(x)  = Round(x) = Fix(x))


Вот так, при значении 1.27 выдается Фолс. Хотя по идее должна выдаваться Тру, ибо при 1.27 все функции округляют до 1.

ЗЫ
Спасибо, разобрался с разницей в функциях округления. Чтобы удостовериться - Cint - в отличии от Int - всегда возвращает нам переменную типа Integer*? Именно поэтому CInt(123456789.55) выдает Overflow*?
...
Рейтинг: 0 / 0
Вопрос
    #36711604
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМСпасибо, разобрался с разницей в функциях округления. Чтобы удостовериться - Cint - в отличии от Int - всегда возвращает нам переменную типа Integer*? Именно поэтому CInt(123456789.55) выдает Overflow*?
Верно.
Фактически - это разные классы функций. Int - округление, CInt - преобразование типа (походу делающее округление), как и CDate, CSng и т.п.
...
Рейтинг: 0 / 0
Вопрос
    #36711614
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМ,

вот еще для понимания
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub b()
Dim x As Double
x =  1 . 27 
Debug.Print "CInt(x)=" & CInt(x) & ";" & TypeName(CInt(x))
Debug.Print "Int(x)=" & Int(x) & ";" & TypeName(Int(x))
Debug.Print "Round(x)=" & Round(x) & ";" & TypeName(Round(x))
Debug.Print "Fix(x)=" & Fix(x) & ";" & TypeName(Fix(x))

End Sub
...
Рейтинг: 0 / 0
Вопрос
    #36711620
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМbig-dukeДаркТМ,
Порбуйте вот так
Код: plaintext
a = (CInt(x) = Int(x)  = Round(x) = Fix(x))


Вот так, при значении 1.27 выдается Фолс. Хотя по идее должна выдаваться Тру, ибо при 1.27 все функции округляют до 1.

Потому что БигДюк впервые на моей памяти перегрелся...

там начнется сравнение 1 с True, а это не одно и то же
...
Рейтинг: 0 / 0
Вопрос
    #36711692
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'CInt отбрасывает дробную часть любого заданного им числа, возвращая целое число, также выполняет привычное округление числа
...
Рейтинг: 0 / 0
Вопрос
    #36711702
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю'CInt отбрасывает дробную часть любого заданного им числа, возвращая целое число, также выполняет привычное округление числа
Не вводи человека в заблуждение, не разобравшись в вопросе. CInt именно что округляет, а не отбрасывает дробную часть (это делает Fix)
...
Рейтинг: 0 / 0
Вопрос
    #36711732
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

'Функции Fix и Int отбрасывают дробную часть любого заданного им числа, возвращая
'целое число. Но, в отличие от функций CInt и CLng, они не выполняют привычного округ-
'ления — например, Int (4.989) возвращает 4, а не 5
'Результаты этих двух функций отличаются только при обработке отрицательных чисел.
'Тогда Int возвращает ближайшее к значению аргумента меньшее целое число, a Fix просто
'отбрасывает дробную часть аргумента.
...
Рейтинг: 0 / 0
Вопрос
    #36711740
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю'Функции Fix и Int отбрасывают дробную часть любого заданного им числа, возвращая
'целое число. Но, в отличие от функций CInt и CLng, они не выполняют привычного округ-
'ления — например, Int (4.989) возвращает 4, а не 5
'Результаты этих двух функций отличаются только при обработке отрицательных чисел.
'Тогда Int возвращает ближайшее к значению аргумента меньшее целое число, a Fix просто
'отбрасывает дробную часть аргумента.
Вот именно. К CInt это не относится, она не отбрасывает, а округляет дробную часть.
...
Рейтинг: 0 / 0
Вопрос
    #36711767
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, как Вы умеете доходчиво объяснять, Спасибо большое
...
Рейтинг: 0 / 0
Вопрос
    #36712059
ДаркТМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем большое!
Вспоминая школьные уроки паскаля, я делаю вывод, что Fix делает тоже самое, что и функция Trunk -)
Еще раз большое спасибо, правда, мне так кажется - это далеко не последний мой запрос о помощи и советах на этом форуме :)
...
Рейтинг: 0 / 0
Вопрос
    #36712188
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаркТМСпасибо всем большое!
Вспоминая школьные уроки паскаля, я делаю вывод, что Fix делает тоже самое, что и функция Trunk -)
Еще раз большое спасибо, правда, мне так кажется - это далеко не последний мой запрос о помощи и советах на этом форуме :)
Всегда пожалуйста. Приятно, когда человек ХОЧЕТ разобраться.
Только тему топика пишите адекватно, мы ведь просматриваем весь список топиков, приходится либо напрягаться и вспоминать, о чем там речь, либо просто забивать на топик.

Ну или как-то вот так: http://sql.ru/forum/actualthread.aspx?tid=759122
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]