webForumDet fria alternativet

.Net och mySql-funktioner returerar olika.

.NET

1 svar · 431 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Här har jag två funktioner som jag gjort som skall funka på samma sätt, men det är bara det att de returnerar olika resultat...ibland.

ex. Response.Write(getDiff(5,0.4)) returnerar 82

Private Function getDiff(ByVal objCount As Int64, ByVal diffSum As Decimal) As Integer
        Return (100 * ((objCount * 4.5 - Math.Abs(diffSum)) / (objCount * 4.5)))
End Function

och
select getDiff(5,0.4) returnerar 98

CREATE DEFINER=`userX`@`%` FUNCTION `getDiff`(objCount int,diffSum decimal(6,5)) RETURNS int(3)
BEGIN
RETURN (100 * (((objCount * 4.5) - abs(diffSum)) / (objCount * 4.5)));
END;

Bord det inte göra samma sak?

Medlem sedan maj 20012 812 inlägg
#2

travoni skrev:

Här har jag två funktioner som jag gjort som skall funka på samma sätt, men det är bara det att de returnerar olika resultat...ibland.

Jag skulle misstänka att MySql och .NET inte hanterar dina integers på samma sätt. Så jag misstänker att ditt problem ligger i din (objCount * 4.5). Jag skulle testa med att typomvandla din objCount till en double innan du använder den i din uträkning.

- M

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)