2017-01-21 1 views
0

Я знаю некоторые относительно похожие вопросы на этом сайте, но если они применимы к моей проблеме (что я не уверен, что они это делают), тогда Я, конечно, не понимаю их. Вот моя проблема;Оператор Swift-Binary не может применяться к операндам при преобразовании градусов в радианы

var degrees = UInt32() 
var radians = Double() 

let degrees:UInt32 = arc4random_uniform(360) 
let radians = angle * (M_PI/180) 

Это возвращает ошибку, сфокусированную на звезде умножения, чтении; «Двоичный оператор« * »не может применяться к операндам типа« UInt32 »и« Double ».

Я уверен, что мне нужно, чтобы переменная степеней была типа UInt32, чтобы рандомизировать ее, а также что pi константа не может быть сделана из UInt32, или, по крайней мере, я не знаю, как, поскольку я относительно новичок в Xcode и Swift вообще.

Я был бы очень признателен, если бы у кого-нибудь было решение моей проблемы .

заранее спасибо.

ответ

1
let degree = arc4random_uniform(360) 

let radian = Double(degree) * .pi/180 

вам нужно преобразовать степень удвоения перед умножением.

из яблочного быстрой книги:

Integer и с плавающей точкой преобразования

Конверсии между целыми и с плавающей точкой числовых типов должны быть четкими:

let three = 3 
let pointOneFourOneFiveNine = 0.14159 
let pi = Double(three) + pointOneFourOneFiveNine 

// пи равно 3.14159, и предполагается, что он имеет тип Double

Здесь значение константы th ree используется для создания нового значения типа Double, так что обе стороны от добавок одного типа. Без этой конверсии добавление не будет разрешено. Преобразование с плавающей точкой в ​​целое число также должно быть явным. Целочисленный тип может быть инициализирован с двойным или Float значение:

1 let integerPi = Int(pi) 
2 // integerPi equals 3, and is inferred to be of type Int 

значение с плавающей точкой всегда усеченное когда используется для инициализации нового целого значения таким образом. Это означает, что 4.75 становится 4, а -3.9 становится -3.

Смежные вопросы