我们有一个存储过程,它将余额保存到db。
今天我们有一个例外:
SqlTruncateException:数字算术会导致截断。
我们收到的余额超过10亿,这就造成了这一例外。我不在乎这么大的价值是否是错误的,但我想知道SqlCient奇怪行为的原因。
我们通过一组余额:
public class LoroAccountBalance
{
...
public decimal? Balance { get; set; }
...
}
它映射到用户定义的表类型:
create type Settlement.LoroBalanceType as table
双精度为:15-16位数.
十进制精度是:28-29有效位数.
因此,我们可以将十进制转换为双implicitly.But,考虑以下代码:
double x = 100.3;
decimal y = 10.2;
x = y;
y = x;
x=y和y=x都存在编译时错误。
为什么我们不能隐式地将十进制转换为双小数或双小数化?
请阅读:双倍到十进制,十进制到双
我正在创建新变量,因为AGE.The的截止值是100,除以12,所以这个值就是8.3333.....But,很少有新鲜度值是8.3333333。如果是FRESHNESS>= 100/12的话,我必须选择它的价值,但是它选择新鲜度为8.3333的AMU。新鲜度格式为F12.9,截止时间为BEST12。
data new;
set SEGMENT_AGE;
IF Freshness< CUTOFF/12 THEN AGE=AMU;
ELSE AGE=SEGMENT;
RUN;
我试着用不同的格式将F12.9截
我目前正在输出值到6位小数点,并希望舍入第6位,而不考虑整数值。
到目前为止,我一直在使用CEILING()函数,该函数在向上舍入时对值1-9非常有效;但是,在小数点后7位为0(例如: 2705.1520270)的情况下,该函数不会向上舍入到2705.152028。
select CEILING(price*1000000)/1000000 as PriceRound
from tc_alcf a (nolock)