Avatar billede aniels21 Nybegynder
25. marts 2003 - 09:40 Der er 6 kommentarer og
1 løsning

Kan jeg ikke bruge en brøk som potens i en rentesformel???

Jeg kan ikke få nedenstående til at virke:
---snip start---
CREATE PROCEDURE [Rentetilskrivning]
AS
declare  @rentesats decimal
declare @rentesum decimal
select @rentesum= rentesum from Konto
select @rentesats= rentesats from Administration
UPDATE [Kundeservice].[epark].[Konto]
SET [rentesum] =

@rentesum+[saldo]*(POWER((1+(@rentesats/100)),(1/360))-1)

WHERE ([saldo]<0)
GO
---snip slut---

burde det ikke kunne lade sig gøre at bruge en brøk som potens. Jeg kan i hvert fald ikke. Kun hvis jeg opløfter til 1 eller 1/1 virker det, og så returnerer den endda et forkert resultat. (Også i forhold til hvad den burde returnere med den nye potens ;-) )
Avatar billede cbp Nybegynder
25. marts 2003 - 10:14 #1
Det er fordi din brøk bliver udregnet som et heltal og derfor altid vil blive 0 eller 1.

Så hvis du i stedet for @rentesats/100 bruger Cast(@rentesats As decimal)/100 og i stedet for 1/360 bruger Cast(1 as decimal)/360 er du i hvert fald et skridt nærmere.
Avatar billede techhouse Nybegynder
25. marts 2003 - 10:19 #2
Vil man ikke opnå det samme ved at benytte @rentesats/100.0?
/Thomas
Avatar billede meku Nybegynder
25. marts 2003 - 10:39 #3
Er du sikker på at dine parenteser er sat rigtigt? Burde det ikke være således:

@rentesum+[saldo] * (power(1+(@rentesats/100),(1/360)-1))
Avatar billede aniels21 Nybegynder
27. marts 2003 - 09:45 #4
Yep, jeg er sikker -næsten. Har rådført mig med en finansieringsmodulator, "-1" skal vist være uden for POWER().
Avatar billede aniels21 Nybegynder
01. april 2003 - 08:52 #5
Tak skal cbp have, det virkede. Nu opdateres [rentesum] bare ikke. Det er som om den blot overskrives med samme beløb hver gang.

Hvis du vil have point må du lige svare i stedet for at kommentere, så skal jeg give dig pointene :-)
Avatar billede cbp Nybegynder
01. april 2003 - 13:25 #6
Ok, tak.
Avatar billede wann Nybegynder
01. april 2003 - 13:36 #7
du skal være opmærksom på at et heltal divideret med et heltal giver et heltal som svar fx 5 / 2 = 2 og ikke 2.5, med ved at skrive henholdsvis 100.0 og 360.0 i nævneren så bliver det et heltal divideret med decimaltal hvilket giver et decimaltal som svar. hvilket er hvad der kræves her.

CREATE PROCEDURE [Rentetilskrivning]
AS
declare  @rentesats decimal
declare @rentesum decimal
select @rentesum= rentesum from Konto
select @rentesats= rentesats from Administration
UPDATE [Kundeservice].[epark].[Konto]
SET [rentesum] =

@rentesum+[saldo]*(POWER((1+(@rentesats/100.0)),(1/360.0))-1)

WHERE ([saldo]<0)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester