Hola, la aplicacion que estamos ealizando tiene que ser capaz de
calcular los intereses brutos, netos y el importe a vencimiento a partir
de una serie de datos: el dinero a invertir, el tiempo de inversion y el
TAE.
Para ello en el modelo tengo la siguiente funcion:
def calcula_tin_bruto_neto_vencimiento(dinero = 0, tae = 0, meses = 0)
# tin=interes nominal—>Interés - Wikipedia, la enciclopedia libre
#n=Fraccion en que el interes va a ser aplicado #una vez al mes->12 al año, n=12 #una vez cada 6 meses->2 al año, n=6
self.dinero_a_invertir == BigDecimal.new("dinero") if dinero > 0
self.meses == BigDecimal.new("meses") if meses > 0
self.tae == BigDecimal.new("tae") if tae > 0
n=12/self.meses
#raise n.inspect
tin1=(1+(self.tae/100))**(1/n)
------->raise tin1.inspect
tin =(tin1-1)*n
self.intereses_brutos
=self.dinero_a_invertir*(tin/100)(self.meses/12)
self.intereses_netos=self.intereses_brutos-(self.intereses_brutos0.18)
self.importe_a_vencimiento=self.dinero_a_invertir+self.intereses_netos
self.save
end
El problema lo tengo en la linea que marco con -------> el raise me saca
este resultado:
Sin embargo haciendolo con excel el resultado es de 1.018… El problema
es que en la siguiente linea le resto la unidad pues todos los calculos
dejan de servir.
El dÃa 13/05/09 18:19 +0200, Jose vicente Ribera pellicer escribió:
#una vez al mes->12 al año, n=12
#una vez cada 6 meses->2 al año, n=6
self.dinero_a_invertir == BigDecimal.new("dinero") if dinero > 0
self.meses == BigDecimal.new("meses") if meses > 0
self.tae == BigDecimal.new("tae") if tae > 0
DeberÃas de probar con:
self.dinero_a_invertir == BigDecimal.new(dinero) if dinero > 0
El problema era que estaba haciendo cast. He puesto las instrucciones
como deci Daid y hemos tocado la especificacion de la tabla ajustando
los valores de precision y scale de los datos decimales.
On Jueves, 14 de Mayo de 2009 19:00:00 Jose vicente Ribera pellicer
escribió:
Como decia anteriormente ya consigo que en la tabla aparezcan los datos
con dos decimales. Con el metodo number_with_precision(dato, numero de
decimales a mostrar) no hay mas problema.
Ahora me han pedido que los digitos aparezcan con la coma de los
millares, es decir en vez de 10000.45 deberia aparecer 10,000.45. He
estado anvegando y por el momento no he encontrado ninguna funcion que
lo implemente. Si alguien sabe de alguna se lo agradeceria.
S2
La misma funcion number_with_precision te permite hacerlo:
number_with_precision(10000.45325, :precision => 2, :separator => ‘,’,
:delimiter => ‘.’)
Como decia anteriormente ya consigo que en la tabla aparezcan los datos
con dos decimales. Con el metodo number_with_precision(dato, numero de
decimales a mostrar) no hay mas problema.
Ahora me han pedido que los digitos aparezcan con la coma de los
millares, es decir en vez de 10000.45 deberia aparecer 10,000.45. He
estado anvegando y por el momento no he encontrado ninguna funcion que
lo implemente. Si alguien sabe de alguna se lo agradeceria.
La misma funcion number_with_precision te permite hacerlo:
number_with_precision(10000.45325, :precision => 2, :separator => ‘,’,
:delimiter => ‘.’)
Usando este helper asi me han salido una serie de erores, finalmente
mirando un poco el api me ha funcionado implementandolo de esta forma (
la Api vieja):
#Primero calculo el dato con precision 2
<%-dato= number_with_precision(dato,2) %> #Le doy el aspecto visual que me interesa
<%= number_with_delimiter(dato, ".", ",")
%>
por si alguien puede estar interesado en el tema dejo la direccion:
S2
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.