本人萌新,C#学了快2周
最近在网上找到了一些浮点数转化到整数的很神奇的做法,不过文章都是讲C和C++的;
文章说到由于编译器不依赖于具体平台,所以当浮点数转化成整数的时候编译器做了很多工作,导致效率很低。
于是乎自己写转化方法,用一个神奇数字,仅仅是一次浮点数加法,就可以提高效率。
原文:
inline void RoundToInt64 (int &val, double dval)
{
static double magic = 6755399441055744.0;
dval += magic;
val = *(int*)&dval;
}
我想知道在C#里面要怎么办?
我尝试这样改
public int RoundToInt64 (int val, double dval)
{
double magic = 6755399441055744.0;
dval += magic;
val = *(int*)dval;
}
VS错误提示是“无法将类型double转化为int/long”????
咋办?
或者说,有其他的办法提高效率么?
最近在网上找到了一些浮点数转化到整数的很神奇的做法,不过文章都是讲C和C++的;
文章说到由于编译器不依赖于具体平台,所以当浮点数转化成整数的时候编译器做了很多工作,导致效率很低。
于是乎自己写转化方法,用一个神奇数字,仅仅是一次浮点数加法,就可以提高效率。
原文:
inline void RoundToInt64 (int &val, double dval)
{
static double magic = 6755399441055744.0;
dval += magic;
val = *(int*)&dval;
}
我想知道在C#里面要怎么办?
我尝试这样改
public int RoundToInt64 (int val, double dval)
{
double magic = 6755399441055744.0;
dval += magic;
val = *(int*)dval;
}
VS错误提示是“无法将类型double转化为int/long”????
咋办?
或者说,有其他的办法提高效率么?