Rumah > pangkalan data > tutorial mysql > Mengapa Menghantar SQL Terapung ke C# Float Membuang InvalidCastException?

Mengapa Menghantar SQL Terapung ke C# Float Membuang InvalidCastException?

DDD
Lepaskan: 2024-12-23 18:15:17
asal
1027 orang telah melayarinya

Why Does Casting a SQL Float to a C# Float Throw an InvalidCastException?

Percanggahan antara SQL Float dan C# Float

Apabila mendapatkan semula nilai daripada pangkalan data SQL dengan jenis data float dan cuba menetapkannya kepada Pembolehubah C# jenis apungan, anda mungkin menghadapi InvalidCastException. Ini kerana jenis data apungan SQL sepadan dengan dua kali ganda dalam C#.

Contoh:

Pertimbangkan kod berikut:

DataRow exercise = _exerciseDataSet.Exercise.FindByExerciseID(65);
_AccelLimit = (float)exercise["DefaultAccelLimit"]; // Throws InvalidCastException
Salin selepas log masuk

Sebab Pengecualian:

Balingan eksplisit daripada objek terapung dalam kod di atas tidak boleh dilakukan kerana jenis data asas adalah dua kali ganda. Apungan SQL disimpan sebagai nilai titik terapung 64-bit, yang berbeza daripada nilai titik terapung 32-bit yang diwakili oleh jenis data apungan C#.

Penyelesaian:

Untuk menyelesaikan isu ini, anda boleh menukar secara eksplisit nilai yang diperoleh kepada dua kali ganda sebelum menghantarnya ke apungan:

_AccelLimit = (float)(double)exercise["DefaultAccelLimit"];
Salin selepas log masuk

Penukaran ini memastikan bahawa nilai yang diperoleh dibuang dengan betul kepada dua kali ganda, dan kemudian ditukar kepada apungan untuk memadankan jenis data yang diisytiharkan pembolehubah.

Atas ialah kandungan terperinci Mengapa Menghantar SQL Terapung ke C# Float Membuang InvalidCastException?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan