Size: a a a

2020 July 09

GV

Gukov Viktor in learn.java
Антон
что я должен с ним сделать?
1. Взять корень от числа
2. Проверить является ли полученный корень целым числом
Например
(sqrt - Math.floor(sqrt)) == 0
источник

АZ

А - Z in learn.java
Антон
Всем привет!)
Я немного тугой по математике, сейчас начал только восстанавливать школьные знания, по этому не плюйтесь, пожалуйста :)
Мне нужно проверить является ли число полным квадратом(квадратным числом), я не нашел инфу в рунете, а на английском не могу нормально сформулировать поисковый запрос. Все что я придумал - это сравнивать введенное число с методом Math.pow() в цикле for. Но каждый раз делать проверку до миллиона, это такое себе. Помогите, плиз)
блин , ну это реально крутой костыль) я бы фиг  до такого додумался)))
источник

А

Антон in learn.java
А - Z
блин , ну это реально крутой костыль) я бы фиг  до такого додумался)))
у меня на код варс корни до 10_000_000 считала, но потом я застеснялся постить такой код и решил сделать по людски ;D
источник

АZ

А - Z in learn.java
корень числа вернул милион?) мб квадрат?)))
источник

А

Антон in learn.java
пора короче отдыхать
источник

А

Антон in learn.java
public static boolean isSquare(int n) {                      
   return Math.sqrt(n) == (int)Math.sqrt(n) ? true : false;
   }
источник

А

Антон in learn.java
по итогу вышло так, еще раз всем спасибо
источник

かたかわ in learn.java
Антон
public static boolean isSquare(int n) {                      
   return Math.sqrt(n) == (int)Math.sqrt(n) ? true : false;
   }
не надо true : false
источник

かたかわ in learn.java
return Math.sqrt(n) == (int)Math.sqrt(n) достаточно
источник

АZ

А - Z in learn.java
かたかわ
return Math.sqrt(n) == (int)Math.sqrt(n) достаточно
а разве оно будет работать так оО?
источник

h

humanoid in learn.java
Имхо лучше так
Math.sqrt(n) % 1 == 0

Приведения типов нужно смотреть на правила, а так не надо и лучше читается
источник

かたかわ in learn.java
humanoid
Имхо лучше так
Math.sqrt(n) % 1 == 0

Приведения типов нужно смотреть на правила, а так не надо и лучше читается
+
источник

GV

Gukov Viktor in learn.java
А - Z
а разве оно будет работать так оО?
Будет, но не очень элегантно. Правый операнд сначала насильно кастится в int, а потом повышается обратно до double
источник

АZ

А - Z in learn.java
Gukov Viktor
Будет, но не очень элегантно. Правый операнд сначала насильно кастится в int, а потом повышается обратно до double
да спасибо , уже понял)
источник

G

Galv in learn.java
спс
источник

GV

Gukov Viktor in learn.java
humanoid
Имхо лучше так
Math.sqrt(n) % 1 == 0

Приведения типов нужно смотреть на правила, а так не надо и лучше читается
Так сработает в рамках задачи, но в жизни сможет сыграть злую шутку. Потому что после 16 знака, % 1 внезапно даст 0.0
Т.е.
        double sqrt = 1.0000000000000001;
       System.out.println(sqrt % 1 == 0);

Вернет true
источник
2020 July 10

S

Sonne in learn.java
Gukov Viktor
Так сработает в рамках задачи, но в жизни сможет сыграть злую шутку. Потому что после 16 знака, % 1 внезапно даст 0.0
Т.е.
        double sqrt = 1.0000000000000001;
       System.out.println(sqrt % 1 == 0);

Вернет true
Это вполне себе прописано в спецификации, тут жаба не следует IEEE754, тут деление с округлением
источник

T

Tagir in learn.java
Задача хорошая, кстати, как сделать это наиболее быстрым способом. Тут целых 54 ответа =) https://stackoverflow.com/q/295579/4856258
источник

EL

Eugenie Li in learn.java
Не читала всю ветку, довольно много сообщений, но если задача найти квадратный корень, то мне столбиком кажется один из наиболее простых https://urok.1sept.ru/%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8/517087/  здесь я пробовала сделать на java https://www.github.com/Mircella/algorithms/tree/master/interview%2Fsrc%2Fkz%2Fmircella%2Finterview%2Fsqrt%2FSqrt.java
источник

T

Tagir in learn.java
Алгоритм удобен для человека, но несильно для компьютера. Но можно попробовать и сравнить по скорости 😊
источник