Jika Anda hanya menggunakan bilangan bulat dalam sebuah divisi, Anda akan mendapatkan pembagian bilangan bulat. Saat Anda menggunakan (setidaknya satu) double atau float, Anda akan mendapatkan pembagian floating point (dan jawaban yang ingin Anda dapatkan).
Jadi kamu bisa
mendeklarasikan satu atau kedua variabel sebagai float / double
melemparkan satu atau kedua variabel menjadi float / double.
Jangan hanya mengubah hasil pembagian bilangan bulat menjadi dua kali lipat: pembagian sudah dilakukan sebagai pembagian bilangan bulat, jadi angka di belakang desimal sudah hilang.
Terima kasih sobat. Kode Anda membantu saya menjawab pertanyaan ini - stackoverflow.com/questions/20532187/… Dapatkah Anda memberi tahu saya cara memotong angka nol ekstra yang disebabkan oleh perkalian itu? Terima kasih.
Trojan.ZBOT
2
jika Anda mendeklarasikannya sebagai float atau format desimal apa pun, itu akan ditampilkan
0
hanya
Misal:
declare @weight float;
SET @weight= 47 / 638; PRINT @weight
Keluaran: 0
Jika Anda menginginkan keluaran sebagai
0,073667712
Misalnya
declare @weight float;
SET @weight= 47.000000000 / 638.000000000; PRINT @weight
Hum ok saya mengerti sekarang tetapi dua angka yang ingin saya bagi adalah variabel, dan tampaknya tidak berfungsi jika .0000 tidak ditentukan dalam variabel.
Roch
jadi Anda perlu mentransmisikan @ set1 dan @ set2 untuk mengapung :)
anishMarokey
1
Dalam SQL Server divisi langsung dari dua integer mengembalikan integer bahkan jika hasilnya harus float. Ada contoh di bawah ini untuk menyampaikannya:
Jawaban:
Deklarasikan set1 dan set2 sebagai float, bukan integer, atau lemparkan ke float sebagai bagian dari kalkulasi:
SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);
sumber
Jika Anda hanya menggunakan bilangan bulat dalam sebuah divisi, Anda akan mendapatkan pembagian bilangan bulat. Saat Anda menggunakan (setidaknya satu) double atau float, Anda akan mendapatkan pembagian floating point (dan jawaban yang ingin Anda dapatkan).
Jadi kamu bisa
Jangan hanya mengubah hasil pembagian bilangan bulat menjadi dua kali lipat: pembagian sudah dilakukan sebagai pembagian bilangan bulat, jadi angka di belakang desimal sudah hilang.
sumber
Karena itu bilangan bulat. Anda perlu mendeklarasikannya sebagai angka atau desimal floating point, atau memasukkannya ke dalam perhitungan.
sumber
Cukup gandakan bagian bawah pembagian dengan 1,0 (atau tempat desimal sebanyak yang Anda inginkan)
PRINT @set1 PRINT @set2 SET @weight= @set1 / @set2 *1.00000; PRINT @weight
sumber
jika Anda mendeklarasikannya sebagai float atau format desimal apa pun, itu akan ditampilkan
hanya
Misal:
declare @weight float; SET @weight= 47 / 638; PRINT @weight
Keluaran: 0
Jika Anda menginginkan keluaran sebagai
Misalnya
declare @weight float; SET @weight= 47.000000000 / 638.000000000; PRINT @weight
sumber
Dalam SQL Server divisi langsung dari dua integer mengembalikan integer bahkan jika hasilnya harus float. Ada contoh di bawah ini untuk menyampaikannya:
--1-- declare @weird_number_float float set @weird_number_float=22/7 select @weird_number_float --2-- declare @weird_number_decimal decimal(18,10) set @weird_number_decimal=22/7 select @weird_number_decimal --3-- declare @weird_number_numeric numeric set @weird_number_numeric=22/7 select @weird_number_numeric --Right way declare @weird_number float set @weird_number=cast(22 as float)/cast(7 as float) select @weird_number
Hanya blok terakhir akan mengembalikan 3,14285714285714. Meskipun blok kedua ditentukan dengan presisi yang tepat, hasilnya akan menjadi 3.00000.
sumber