在C#中是否有一些关于定点数学的好资源?我见过这样的(http://2ddev.72dpiarmy.com/viewtopic.php?id=156)和这个(What'sthebestwaytodofixed-pointmath?),还有很多关于小数到底是定点数还是float的讨论(更新:响应者已确认它绝对是float),但我还没有看到用于计算余弦和正弦之类的可靠C#库。我的需求很简单——我需要基本的运算符,加上余弦、正弦、arctan2,π等。我认为就是这样。也许平方。我正在编写二维RTS游戏,我主要工作,但是使用float学(double)时的单位移动随着时间的推移(10-30分钟
在C#中是否有一些关于定点数学的好资源?我见过这样的(http://2ddev.72dpiarmy.com/viewtopic.php?id=156)和这个(What'sthebestwaytodofixed-pointmath?),还有很多关于小数到底是定点数还是float的讨论(更新:响应者已确认它绝对是float),但我还没有看到用于计算余弦和正弦之类的可靠C#库。我的需求很简单——我需要基本的运算符,加上余弦、正弦、arctan2,π等。我认为就是这样。也许平方。我正在编写二维RTS游戏,我主要工作,但是使用float学(double)时的单位移动随着时间的推移(10-30分钟
这个问题在这里已经有了答案:Isfloatingpointmathbroken?(31个答案)关闭7年前。如果我在C#中执行以下表达式:doublei=10*0.69;i是:6.8999999999999995。为什么?我知道像1/3这样的数字很难用二进制表示,因为它有无限循环的小数位,但0.69不是这种情况。而0.69很容易用二进制表示,一个二进制数表示69,另一个表示小数点的位置。我该如何解决这个问题?使用十进制类型?
这个问题在这里已经有了答案:Isfloatingpointmathbroken?(31个答案)关闭7年前。如果我在C#中执行以下表达式:doublei=10*0.69;i是:6.8999999999999995。为什么?我知道像1/3这样的数字很难用二进制表示,因为它有无限循环的小数位,但0.69不是这种情况。而0.69很容易用二进制表示,一个二进制数表示69,另一个表示小数点的位置。我该如何解决这个问题?使用十进制类型?
我想知道当一个点相对于另一个点旋转一个角度时如何计算出新坐标。我有一个方block箭头,我想将它旋转一个角度theta相对于箭头底部中间的一个点。这是允许我在2个屏幕控件之间绘制多边形所必需的。我无法使用和旋转图像。到目前为止,根据我的考虑,使问题更加复杂的是屏幕的原点位于左上角。 最佳答案 如果您将点(px,py)围绕点(ox,oy)旋转theta角度,您将得到:p'x=cos(theta)*(px-ox)-sin(theta)*(py-oy)+oxp'y=sin(theta)*(px-ox)+cos(theta)*(py-oy)
我想知道当一个点相对于另一个点旋转一个角度时如何计算出新坐标。我有一个方block箭头,我想将它旋转一个角度theta相对于箭头底部中间的一个点。这是允许我在2个屏幕控件之间绘制多边形所必需的。我无法使用和旋转图像。到目前为止,根据我的考虑,使问题更加复杂的是屏幕的原点位于左上角。 最佳答案 如果您将点(px,py)围绕点(ox,oy)旋转theta角度,您将得到:p'x=cos(theta)*(px-ox)-sin(theta)*(py-oy)+oxp'y=sin(theta)*(px-ox)+cos(theta)*(py-oy)
我想将double四舍五入为整数。例如,doublea=0.4,b=0.5;我想把它们都改成整数。这样intaa=0,bb=1;aa来自a,bb来自b。有什么公式可以做到这一点? 最佳答案 使用Math.Ceiling总结Math.Ceiling(0.5);//1使用Math.Round只是圆Math.Round(0.5,MidpointRounding.AwayFromZero);//1和Math.Floor向下舍入Math.Floor(0.5);//0 关于c#-如何将值C#舍入到最
我想将double四舍五入为整数。例如,doublea=0.4,b=0.5;我想把它们都改成整数。这样intaa=0,bb=1;aa来自a,bb来自b。有什么公式可以做到这一点? 最佳答案 使用Math.Ceiling总结Math.Ceiling(0.5);//1使用Math.Round只是圆Math.Round(0.5,MidpointRounding.AwayFromZero);//1和Math.Floor向下舍入Math.Floor(0.5);//0 关于c#-如何将值C#舍入到最
我需要完美的算法或C#函数来计算2个十进制数之间的差值(距离)。例如两者之间的区别:100和25是75100和-25是125-100和-115是15-500和100是600是否有一个C#函数或一个非常优雅的算法来计算这个,或者我必须去用if分别处理每个案例。如果有这样的函数或算法,是哪一种? 最佳答案 你可以这样做publicdecimalFindDifference(decimalnr1,decimalnr2){returnMath.Abs(nr1-nr2);} 关于c#-两个数字之间
我需要完美的算法或C#函数来计算2个十进制数之间的差值(距离)。例如两者之间的区别:100和25是75100和-25是125-100和-115是15-500和100是600是否有一个C#函数或一个非常优雅的算法来计算这个,或者我必须去用if分别处理每个案例。如果有这样的函数或算法,是哪一种? 最佳答案 你可以这样做publicdecimalFindDifference(decimalnr1,decimalnr2){returnMath.Abs(nr1-nr2);} 关于c#-两个数字之间