Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Dlaczego w tym kodzie występuje błąd "Double value cannot be converted to Int"?


  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 wasyl830

wasyl830
  • 3 postów

Napisano 13 lipca 2017 - 19:25

 

Witam 

Jestem nowy na forum więc witam wszyskich,no i oczywiście w programowaniu.

Mam błąd z którym nie mogę sobie poradzić od dłuższego czasu dosłownie stoję  w miejscu .NIe mogę nigdzie znaleść odpowiedzi, a wiec gdy "let D" lub l"et G" nie jest liczbą całkowitą,w "let Q" jest error..Probowałem zaokrąglić liczby ale to nic nie daje chyba nie tędy droga.Może ktoś ma jakiś pomysł ?

//: Playground - noun: a place where people can play

import UIKit

let D = Double(2340)
let G = Double(5688)
let A = Double(90)
let V = Double(0)
let T = Int(24)
let U = Double(30)

let r = D / 2
let R = G / 2
let O = 1 / sin((Double(A) * .pi) / 180)
let E = 1 / tan((Double(A) * .pi) / 180)
let L = R * O + r * E
let W = asin(V / R)
let P = Double .pi / 180


if Int(A) == 90 {
    
    for X in 0...T/4 {
        let F = ((Double(X) * Double((360 / T))) * .pi) / 180
        let C = r * cos(F) + V
        let B = acos(C / R)
        let K = 180 - (acos((r - V) / R) * 180) / .pi
        let I = R * cos(B) - V
        let Y = acos(I / r)
        let M = O * r * sin(Y)
        let Q = Int(round(R * E * (sin(B) - sin((K * .pi) / 180)) - M))
        print("\([X])
					
					

#2 piotrekov

piotrekov
  • 35 postów

Napisano 17 lipca 2017 - 13:18

Poniewaz przy pierwszej iteracji Q jest NaN.

Wez wrzuc "let Q = Int(round(R * E * (sin(B) - sin((K * .pi) / 180)) - M))" w warunek "if X > 0" i powinno byc ok.


Użytkownik piotrekov edytował ten post 17 lipca 2017 - 13:22

Komputer: i5 4670K // ASUS Maximus VI Formula Z87 // Kingston HyperX Beast 8GB 1600MHz // Corsair 750D // Corsair H100i // Enermax Platimax 750W // Samsung EVO 128GB // IIYAMA XB2485WSU Laptop: Macbook Pro Retina 15" i7 2,4GHz / 8GB / GT650 Telefon: iPhone 5S 16GB

#3 wasyl830

wasyl830
  • 3 postów

Napisano 17 lipca 2017 - 20:20

Poniewaz przy pierwszej iteracji Q jest NaN.

Wez wrzuc "let Q = Int(round(R * E * (sin(B) - sin((K * .pi) / 180)) - M))" w warunek "if X > 0" i powinno byc ok.

dzięki za pomoc ,ale znalazłem to samo rozwiazanie ale w bardziej prosty sposób 

"for X in 1...T/4" zero zmieniłem na 1,jak to mówią co dwie głowy to nie jedna






Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych