加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

两个C#问题;我怎么能重新解释一个浮点数到int? C#是否具有非静

发布时间:2020-12-15 03:47:53 所属栏目:百科 来源:网络整理
导读:1. 我如何重新诠释一个浮动到一个int(或一个双倍到一个长)? float f = 2.0f;int i = (int)f; // causes conversion 我只想将位模式从f复制到i.如何才能做到这一点? 2. C#中的隐式和显式运算符使用一个中间对象,因为运算符函数是’static’ public static i
1.
我如何重新诠释一个浮动到一个int(或一个双倍到一个长)?
float f = 2.0f;
int i = (int)f; // causes conversion

我只想将位模式从f复制到i.如何才能做到这一点?

2.
C#中的隐式和显式运算符使用一个中间对象,因为运算符函数是’static’

public static implicit operator MyClass(double s)
{
    return new MyClass(s);
} 
..
..
MyClass m = 2.2; // this code uses 'm' and one intermediate object.

X- 20045 X- 200 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 200我的理解正确吗?新新200的X- 200新新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新新200新新200新新200新新200新Version旗新新旗新新200如果是这样,怎么办?

谢谢

解决方法

> BitConverter类可以检索任何原始类型的字节,然后您可以使用它们来创建一个int.另一个选项是 Buffer.BlockCopy,如果你有大量的转换做.
float ff = 2.0f;
int ii = BitConverter.ToInt32(BitConverter.GetBytes(ff),0);

float[] ff = new float[...];
int[] ii = new int[ff.Length];
Buffer.BlockCopy(ff,ii,ff.Length * 4); // byte-wise copy of ff into ii

> C#中没有任何其他选项,但是,我认为虽然在正确的情况下,将会有一个副本,但任何足够简单的实现都将完成JIT优化,从而可能无需复制.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读