suma resueltos radicacion periodicos pasar números multiplicacion fracciones equivalentes ejercicios decimales como calculadora objective-c math swift type-conversion

objective-c - periodicos - radicacion de fracciones ejercicios resueltos



Swift obtiene la fracción de flotación (5)

He estado probando rápido últimamente y me he encontrado con un problema bastante simple.

En Obj-C cuando quiero obtener los dígitos de fracción de una carroza, haré lo siguiente:

float x = 3.141516 int integer_x = (int)x; float fractional_x = x-integer_x; //Result: fractional_x = 0.141516

en Swift:

let x:Float = 3.141516 let integerX:Int = Int(x) let fractionalX:Float = x - integerX

-> esto da como resultado un error debido a los tipos que no se están aplicando

¿Alguna Idea de cómo hacerlo correctamente?

Gracias por adelantado

Malte


¿Por qué usar un int en absoluto?

¿Qué pasa con esto en su lugar?

import Darwin let x = 3.1415926 let xf = x - (x > 0 ? floor(x) : ceil(x))

Utilizará dobles por defecto aquí. Siéntase libre de usar flotadores si es lo que necesita:

let x: Float = 3.1415926

¿Es esto lo que estás buscando?


A Swift 3 no le gusta el operador de módulo % . Quiere que use truncatingRemainder de tipo Double .

let x1:Double = 123.00 let t1 = x1.truncatingRemainder(dividingBy: 1) print("t1 = /(t1)") let x2:Double = 123.45 let t2 = x2.truncatingRemainder(dividingBy: 1) print("t2 = /(t2)")

Produce salida:

t1 = 0.0 t2 = 0.450000000000003

Para eliminar el artefacto 3 cuadrillonésimo, probablemente redondees el resultado.


El problema es que no puedes restar Float e Int, debes convertir uno de este valor para que sea igual a otro, intenta eso:

let fractionalX:Float = x - Float(integerX)


Use el operador de módulo: ( x% 1 ), que

  • inmediatamente (es solo un personaje), y
  • con pocos ciclos de CPU (presumiblemente solo un ciclo, ya que el módulo es una instrucción de CPU común)

da la parte fraccional.

let x:Float = 3.141516 let fracPart = x%1

fracPart asumirá el valor: 0.141516 . Esto funciona para el double y float , sin embargo, el double devuelve erróneamente 0.1415160000000002 en mi Mac en el patio de recreo, así que esté alerta.


Use la función modf :

let v = 3.141516 var integer = 0.0 let fraction = modf(v, &integer) println("fraction: /(fraction)");

salida:

fracción: 0.141516

Para flotador en lugar de doble uso: modff