webForumDet fria alternativet

Float i MS Server 2000 och .NET

3 svar · 253 visningar · startad av ptype

ptypeMedlem sedan juni 2002151 inlägg
#1

Hallå! Har ett fält i en MS Server 2000-databas som är specificerad som float.

Programmerar C# och bygger upp min SQL-sats enl. nedan.

insertCmd.Parameters.Add(new SqlParameter("@fltPriceAdd", SqlDbType.Float));
insertCmd.Parameters["@fltPriceAdd"].Value=price;

där price är float. Problemet är att sätter jag in t.ex. 0,35 i databasen så lagras i databasen 0,349999994039536. Motsvarande för andra siffror.

Har provat med SqlDbType.Real också men det blir samma sak.

Nån som vet hur man slipper detta?

GunnarDMedlem sedan juni 20014 290 inlägg
#2

En dator kan inte hantera decimaltal exakt.
Så du kommer alltid att få sådana fel så länge du hanterar flyttal, tyvärr.

Titta på detta lilla c program:

#include <stdio.h>

main(void) {
        float i;
        for(i=7.0; i<8.0; i+=.1) {
                printf("%g\t%f\n", i, i);
        }
}

Programmet skall skriva ut talen 7.0, 7.1 .... 7.9 (10 tal) och inte 8.0 med det gör det.

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Använd typen decimal istället.

decimal(s,p) -- s totala antalet siffror
-- p antal decimaler

ptypeMedlem sedan juni 2002151 inlägg
#4

tack!

127 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)