我需要保存十进制数字,如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
答案 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
谢谢..