webForumDet fria alternativet

Decimaler vid division

6 svar · 327 visningar · startad av Moppan

MoppanMedlem sedan okt. 200258 inlägg
#1

Hallå!

Hur kan jag få ett decimaltal som resultat av en division som jag gör i en Stored Procedure? Som jag förstår så blir resultatet en integer.

Såhär står det i hjälpen:
"If an integer dividend is divided by an integer divisor, the result is an integer that has any fractional part of the result truncated".

Hur gör jag för att få en decimal?

IF @Hours > 0
BEGIN
SET @Total = @Hours* 100/@Hours2
END

//Mia

@ndersMedlem sedan juni 200026 914 inlägg
#2

Prova att deklarera variablerna som Float istället.

Mvh,

MoppanMedlem sedan okt. 200258 inlägg
#3

Det är / som returnerar en integer. Jag undrar om det finns någon annan "divisions operator" att använda i SQL?

MoppanMedlem sedan okt. 200258 inlägg
#4

Hjälper såvida inte med Float

LarsGMedlem sedan dec. 200012 465 inlägg
#5
declare @total decimal(10,2)
if  @hours > 0 
SET @Total = cast(@Hours as dec(10,2))* 100.0/cast(@Hours2  as dec(10,2))
MoppanMedlem sedan okt. 200258 inlägg
#6

SET @Total = cast(@Hours as dec(10,2))* 100.0/cast(@Hours2 as dec(10,2)) fungerar ej!

85/174 = 48% Vill ha 48.9%

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Sträänge.

Det är de ingående datatyperna som avgör vilken datatyp det blir vid division.

declare @total decimal(10,2)
if  @hours > 0 
SET @Total = round(cast(@Hours*100.0 as dec(10,2))/cast(@Hours2  as dec(10,2)),1

Så då?

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb