De C# double zou gelijk moeten zijn aan de SQL Server float.
Aldus MSDN: SQL Server Data Type Mappings
VS C# 2010 & SQL Server 2012
Ik wil de waarde 0.0533047 in een double stoppen.
Als ik dat via C# code doe:
double test = 0.0533047D;
Dan krijg ik 0.053304699999999997.
In C# programma code:
Als ik echter een waarde uit een SQL veld (datatype float) lees, dan krijg ik wel precies 0.0533047 in een double.
//Ik heb een programma dat cijfers als tekst exporteert. Een 2e programma leest die tekst in en converteert naar een cijfer en dan opslaan in een database. Ik ben dat 2e programma (VBA code...) aan het vervangen, maar bij het testen komt mijn programma niet 100% overeen, met bovenstaande afwijkingen.
Ik begrijp dat een datatype niet elk getal kan storen, maar waarom kan het dat wel als ik het uit SQL haal??
Aldus MSDN: SQL Server Data Type Mappings
VS C# 2010 & SQL Server 2012
Ik wil de waarde 0.0533047 in een double stoppen.
Als ik dat via C# code doe:
double test = 0.0533047D;
Dan krijg ik 0.053304699999999997.
In C# programma code:
code:
1
2
3
| double test1 = 0.0533046D; // geeft 0.0533046 double test1 = 0.0533047D; // geeft 0.053304699999999997 double test2 = 0.0533048D; // geeft 0.0533048 |
Als ik echter een waarde uit een SQL veld (datatype float) lees, dan krijg ik wel precies 0.0533047 in een double.
code:
1
| double test4 = datareader.GetDouble(0); // geeft dan de waarde van 0.0533047 voor test4 |
//Ik heb een programma dat cijfers als tekst exporteert. Een 2e programma leest die tekst in en converteert naar een cijfer en dan opslaan in een database. Ik ben dat 2e programma (VBA code...) aan het vervangen, maar bij het testen komt mijn programma niet 100% overeen, met bovenstaande afwijkingen.
Ik begrijp dat een datatype niet elk getal kan storen, maar waarom kan het dat wel als ik het uit SQL haal??