![]() |
1
69
|
![]() |
2
24
SQL中的浮点是 Double 在clr(c/vb)中。有 a table of SQL data types with the CLR equivalents 在MSDN上。 |
![]() |
3
2
Microsoft SQL Server中的float相当于c_中的double。原因是一个浮点数只能近似于一个十进制数, 精度 浮点数的大小决定了浮点数的精度 近似 十进制数。double类型表示双精度64位浮点数,其值范围为负1.79769313486232E308到正1.79769313486232E308,以及正或负零、正无穷大、负无穷大和非数字(NaN)。 |
![]() |
4
2
通常,如果您计划对数据执行数学计算,就不会希望在SQL Server中使用float(或real),因为它是一个不精确的数据类型,并且会导致计算错误。如果需要精度,请改用decimal数据类型。 |
![]() |
5
0
我认为主要问题已经在这里得到了回答,但我觉得有必要为问题的一部分添加一些内容,说明这是可行的。
这个“工作”的原因和它“感觉不正确”的原因是您正在通过第二个转换(左边的转换)将double降级为float,因此您将失去精度,并有效地告诉编译器截断返回的值是可以的。 换句话说,这一行说明… 获取一个对象(在本例中正好包含一个双精度对象) 将对象强制转换为double(丢失所有对象包装) 将双精度球抛入一个浮球(失去双精度球的所有精密度) 例如,如果值为 0.0124022806089461 你这样做,那么加速度极限值将是 零点零一二四零二二八 因为这就是C中的浮点数可以从双精度值得到的范围。 这是一件危险的事情,我非常肯定这也是一个截断,而不是一个舍入,但有人可能想确认这一点,因为我不确定。 |
![]() |
6
0
它“感觉不对劲”的原因是因为C使用相同的语法
拆箱
为了
铸造
这是两个非常不同的东西。
即使铸件是无损的,情况也是如此。如果一个浮点数作为一个要铸成双精度浮点的对象被装箱,您可以这样做:
|
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 7 年前 |
![]() |
tobeypeters · 反射铸造 7 年前 |
![]() |
Alex · 是否改为存储字符串的整数的通用ArrayList? 7 年前 |
![]() |
Kai · 如何在C#中转换会话中存储的词典? 7 年前 |
![]() |
Ján ЯabÄan · 布尔值到双精度的快速转换方法 7 年前 |