Rumah >pangkalan data >tutorial mysql >Mengapa Menghantar SQL Terapung ke C# Float Membuang 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
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"];
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!