• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Является ли число типа Double целым

  • Автор темы Cadet
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

ierofant

solova
double ostatok;
ostatok= (("Наше число")*10)%10;

Из каких соображений число умножается именно на 10, а не на 100 или 1000? Если число будет 6.0004, то что нам даст умножение на десять? Я скажу: 60.004. А операция % вообще неприменима к типу double. Мне непонятна логика ваших действий.
 
S

solova

ierofant: вы писали "Из каких соображений число умножается именно на 10, а не на 100 или 1000?"
"Мне непонятна логика ваших действий. "
:( тут проверяется есть ли что то в дробной части
(это 2-ой класс " разрядности чисел ")
7.0*10=70-> %10=0 -> 0=0 значит целое
7.1*10=71-> %10=1 -> 1!=0 не целое
7.00000001*10=70.0000001->%10=0.0000001 -> 0.0000001!=0 не целое
ierofant: вы писали "А операция % вообще неприменима к типу double. "
да, это вылетело из головы, и я предупреждал "если я не ошибаюсь то проверять можно так", не было студии чтоб сразу проверить, тогда бы не писал.

IrineK: вы писали "Может, не все так просто?"
Даже по мечтать нельзя :)

Но было ещё несколько способов без применения % ,если вспомню то напишу
 
L

lazybiz

7.00000001*10=70.0000001->%10=0.0000001 -> 0.0000001!=0 не целое
С твоей логикой в школу вундеркиндов надо.

solova, ради интереса, что будет если убрать умножение на 10 ?)) Твой алгоритм не сработает?))

Добавлено: solova
Я усовершенствовал твой алгоритм: 7.00000001%10 -> 0.0000001 != 0 - не целое!! )))
 
S

solova

lazybiz вы писали:
"ради интереса, что будет если убрать умножение на 10 ?)) Твой алгоритм не сработает?))"
а теперь возьмите например цифру 71 или 72,73,74,75,76,77,78,79.
71%10=1 НЕ ЦЕЛОЕ
72%10=2 НЕ ЦЕЛОЕ
... НЕ ЦЕЛОЕ
79%10=9 НЕ ЦЕЛОЕ
а вот и не работает.

lazybiz вы писали:
"Я усовершенствовал твой алгоритм: 7.00000001%10 -> 0.0000001 != 0 - не целое!! ))) "
в данном случае данный алгоритм сработает но возьмите несколько разрядное число(двузначное,трёхзначное.....) где в единичном разряде стоит цифра отличная от нуля
(*1,*2,*3,*4,*5,*6,*7,*8,*9) и ваш алгоритм ВСЕГДА будет говорить что НЕ ЦЕЛОЕ
lazybiz вы писали:
"С твоей логикой в школу вундеркиндов надо."
В школе вундеркиндов я не был ,но в математической школе, от звонка до звонка отучился.
PS: в моей стране нету никаких "школ вундеркиндов" , а были бы,то родители меня туда бы отправили.
 
R

RiCrO

Эм.. как я знаю, проверять на равенство дробной части с нулём нельзя. Специфическое представление чисел с плавающей точкой в памяти не позволяет это сделать. Именно поэтому ierofant прав. Хотя я могу ошибаться.
 
I

ierofant

solova
Всё дело в том, что:
7.00000001%10 != 0.0000001

А равно:
7.00000001%10 = неопределённость

% возвращает остаток от деления целых чисел. Остаток от деления, а не дробную часть.
Я уже писал, что некорректно применять эту операции к дробным числам, и как следствие к типу double. Да и попросту компилятор не позволит сделать этого. Потому что неизвестен результат такой операции.
 
S

solova

ierofant
RiCrO
я же говорил что ошибся с точки зрения программирования
 
I

ierofant

В общем, грамотные решения этой задачи уже давно описаны выше, а мы тут спорим, не пойми про что. Пора заканчивать.
 
L

lazybiz

solova
В общем я тебе так скажу: если ничего не понимаешь - не лезь, не позорься!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!