# 小数乘法除法练习题批量生成

SQL SERVER 代码

–1.生成随机数
select top 5000
ceiling(rand(checksum(NEWID())) *1000) as x –生成3位以内随机整数
,ceiling(rand(checksum(NEWID())) *100) as y –生成2位以内随机整数
–cast(cast(rand(rand(number)100000000)10000000000000 as bigint)%1000 as dec(10,4)) as x –生成3位以内随机整数
–,cast(cast(rand(rand(number)100000000)1000000000000000 as bigint)%100 as dec(10,4)) as y –生成2位以内随机整数
–,number,rand(number)100000000,rand(rand(number)100000000)
,cast(0 as dec(28,6))as z
into #temp01
from master..spt_values a,master..spt_values b
where 1=1

–将整数转换为随机位小数
update a set
x=x/(case when cast(rand(x)100000000 as int)%4=1 then 1000 when cast(rand(x)100000000 as int)%4=2 then 100 when cast(rand(x)100000000 as int)%4=3 then 10 else 1 end), –将3位整数随机转换为小数 y=y/(case when cast(rand(y)100000000 as int)%3=1 then 100 when cast(rand(y)*100000000 as int)%3=2 then 10 else 1 end )–将2位整数随机转换为小数
from #temp01 a

–2.清理数据
update #temp01 set z=x*y –计算乘积得数

–去除得数为0的计算
delete from #temp01 where z=0

–去除全整数计算
delete from #temp01 where (x-cast(x as int)=0 and y-cast(y as int)=0)

–去除两个乘数都是小数的计算
delete from #temp01 where cast(x as int)=0 and cast(y as int)=0

–去除有一个乘数是1的计算
delete from #temp01 where x=1 or y=1

–3.输出结果
–select * from #temp01
–输出小数乘法题
select cast(x as float)as 乘数,’x’ 乘,cast(y as float)as 乘数,’=’as 等于,cast(z as float)as 积 from #temp01 order by NEWID()
–输出小数除法题
select cast(z as float)as 被除数,’÷’ 除,cast(y as float)as 除数,’=’as 等于,cast(x as float)as 商 from #temp01 order by NEWID()

27.9 x 0.8 = 22.32
33.6 x 9.2 = 309.12
0.18 x 14 = 2.52
0.425 x 4.2 = 1.785

3312.4 ÷ 5.2 = 637
72.416 ÷ 7.3 = 9.92
7.5287 ÷ 0.79 = 9.53
37.037 ÷ 77 = 0.481

5000道题目下载： 小数计算题一万道