Maafkan saya jika ini adalah pertanyaan yang naif, namun saya bingung hari ini.
Saya memiliki perhitungan pembagian sederhana seperti berikut:
double returnValue = (myObject.Value / 10);
Nilai adalah int di objek.
Saya mendapatkan pesan yang mengatakan Kemungkinan Kehilangan Pecahan. Namun, ketika saya mengubah double menjadi int, pesannya hilang.
Adakah pemikiran tentang mengapa ini terjadi?
Jawaban:
Saat Anda membagi dua int menjadi nilai floating point, bagian pecahannya hilang. Jika Anda melemparkan salah satu item ke float, Anda tidak akan mendapatkan kesalahan ini.
Jadi misalnya ubah 10 menjadi 10.0
sumber
Anda melakukan pembagian integer jika
myObject.Value
int, karena kedua sisi/
bertipe integer.Untuk melakukan pembagian floating-point, salah satu bilangan dalam ekspresi harus berjenis floating-point. Itu akan benar jika myObject.Value adalah ganda, atau salah satu dari berikut ini:
sumber
Integer yang dibagi dengan integer akan mengembalikan integer Anda. Transmisikan Value menjadi double atau bagi dengan 10.0.
sumber
Dengan asumsi itu
myObject.Value
adalahint
, persamaanmyObject.Value / 10
akan menjadi pembagian bilangan bulat yang kemudian akan dilemparkan menjadi ganda.Itu berarti myObject.Value menjadi 12 akan menghasilkan returnValue menjadi 1, bukan 1,2.
Anda perlu memasukkan nilainya terlebih dahulu:
Ini akan menghasilkan nilai 1.2 yang benar, setidaknya sama benarnya dengan double karena keterbatasannya tetapi itu dibahas di tempat lain di SO, hampir tanpa akhir :-).
sumber
Saya pikir karena myObject adalah int, Anda harus melakukannya
sumber