在SQL中保存最大小数点

时间:2018-04-02 14:48:41

标签: sql-server sql-server-2008

我需要保存十进制数字,如12.436783050324。但是当我将它保存在十进制(18,12)列时,它只保存5个小数点(12.436780000000)。有人可以解决这个问题。谢谢..

def add_student(request, pk, student_id):
    class_ = get_object_or_404(Class, id=pk)
    serializer = ClassSerializer(data=class_)

    if serializer.is_valid():  # add student
        student = get_object_or_404(Student, id=student_id)
        class_.students.add(student)
        return redirect('class-detail', pk=pk)

    else:
        errors = serializer.errors
        # handle errors

3 个答案:

答案 0 :(得分:2)

你有一些奇怪的事情发生了:

declare @T table (dec decimal(18, 12));
declare @D decimal(18, 12) = 12.436783050324;
select @D;
insert into @T values (@D);
select * from @T;

---------------------------------------
12.436783050324

dec
---------------------------------------
12.436783050324

答案 1 :(得分:1)

查看代码片段和计算我认为由于@ScheduleAmount的数据类型不同,会发生小数调整。您可以尝试更改代码段中的数据类型并进行测试吗?

a

答案 2 :(得分:0)

我想出了一个解决方案。感谢那些提出答案的人。我非常感谢你的建议。这是我的答案..

ALTER FUNCTION [dbo].[CalculateRebetRate]
(
@SheduleAmount float ,
@LostInterst float ,
@RebateRate float 
)
RETURNS float 
AS
BEGIN

DECLARE @NewRebate float
SET @NewRebate =(@RebateRate *1.00000000000  *((@SheduleAmount- @LostInterst)/@SheduleAmount))
SET @NewRebate=(case when @NewRebate<0 then 0 else @NewRebate END)
RETURN @NewRebate
END

谢谢..