寻求解决以下问题的方法。
在我们的应用程序中,我们有根据用户选择转换单元的功能。例如:根据用户的单元选择将kg转换为lbs,反之亦然。
希望到现在为止实施是明确的,现在对上述解决方案的问题是
我正在寻求一个解决这个问题的办法
表定义
Id | UnitConversion
1 | 100
2 | 200
3 | 30 我们的应用程序是在Angularjs、webapi和sql server上开发的。
发布于 2016-11-15 20:13:13
为了好玩,下面是我转换实用程序的简化版本。只是在这里展示弥撒而已。通过将转换因子存储为varchar,精度将达到单独的记录级别。
Declare @Map table (MapType varchar(50),MapName varchar(50),MapValue varchar(50))
Insert Into @Map values
('Mass','tonnes (metric)','1000'),
('Mass','tons (US)' ,'907.18474'),
('Mass','tons (UK)' ,'1016.0469088'),
('Mass','stones' ,'6.35029318'),
('Mass','slugs(g-pounds)','14.593903'),
('Mass','Solar masses' ,'1.989e30'),
('Mass','pounds (troy)' ,'0.3732417216'),
('Mass','pounds' ,'0.45359237'),
('Mass','picograms' ,'1e-15'),
('Mass','ounces' ,'0.028349523'),
('Mass','ounces (troy)' ,'0.0311034768'),
('Mass','nanograms' ,'1e-12'),
('Mass','milligrams' ,'1e-6'),
('Mass','micrograms' ,'1e-9'),
('Mass','megatonnes' ,'1e9'),
('Mass','kilotonnes' ,'1e6'),
('Mass','kilograms' ,'1'), --- << Base
('Mass','hundredweights' ,'50.80234544'),
('Mass','hectograms' ,'0.1'),
('Mass','grams' ,'1e-3'),
('Mass','grains' ,'0.00006479891'),
('Mass','femtograms' ,'1e-18'),
('Mass','Earth masses' ,'5.980e24'),
('Mass','decagrams' ,'0.01'),
('Mass','cental' ,'45.359237'),
('Mass','carats (metric)','0.0002')
Declare @Value float = 1
Declare @From varchar(50)= 'kilograms'
Declare @To varchar(50)= 'pounds'
Select @Value * Max(IIF(MapName=@From,cast(MapValue as float),null)) / Max(IIF(MapName=@To,cast(MapValue as float),null))
From @Map
Where MapName in(@From,@To)返回
2.20462262184878发布于 2016-11-15 19:40:47
在Sql服务器端,选择一个更细的比例,然后您需要返回到客户端。例如,如果需要小数点右侧的5位数字,请将DB列的标度设置为7。
declare @n decimal(20,5) = 2.20462;
declare @t table (
m decimal(20,7)
);
insert @t(m) values
(1./@n),
(10./@n),
(1000./@n);
select cast(m*@n as decimal(20,5)) as r
from @t;注:“十进制和数字是同义词,可以互换使用。”msdn.microsoft.com/en-us/library/ms187746.aspx。
https://stackoverflow.com/questions/40617829
复制相似问题