每次我认为我理解了强制转换和转换,我就会发现另一个奇怪的行为。
long l = 123456789L;
float f = l;
System.out.println(f); // outputs 1.23456792E8
鉴于long比float具有更大的位深度,我预计需要显式强制转换才能对其进行编译。毫不奇怪,我们看到我们在结果中失去了精确度。
为什么这里不需要强制转换?
我对Server中计算后的小数有问题。所有的数字字段都有数据类型decimal(10,4),但是当我进行计算时,有时它以5小数点的精度舍入。
这是我的疑问:
select rp.ReceptProduct_ID,p.Product_ID, P.Product_Omschrijving, sum(Recept_Hoeveelheid*Prijs) as Totaal
from Product p
inner join ReceptProduct rp
on p.Product_ID=rp.Product_ID
inner join VerpakkingProduct vp
on p.Produc
我目前正在尝试使用WPF,并且我正处于使用Matrix3D结构在坐标空间之间进行转换的阶段。
在意识到WPF在Point3D和Vector3D之间有区别之后(那是两个小时,我再也回不来了……)我可以设置一个转换矩阵。我现在正在尝试引入一个旋转矩阵,但它似乎给出了精确的结果。这是我的世界坐标变换的代码。
private Point3D toWorldCoords(int x, int y)
{
Point3D inM = new Point3D(x, y, 0);
//setup matrix for screen to world
据我所知,float可以精确地表示14个数字。
所以让我们假设我们有
a = 564214623154
b = 54252
我们将这个c=a*b相乘,它应该是30609771735350808,但当编译它时,它显示3.0609771735351E+16,所以据我所知,它应该会失去一些精度,但当我用c除以c/a时,我得到了564214623154的准确结果,而没有任何精度损失
再举一个例子,假设我们有
c = 30609771735350808
d = 30609761111111111
e=c-d应为10624239697,但在编译时显示为10624239696,因此会丢失精度
那么,只有当