-
C# 如何得到float型的Int32的 IEEE 754 浮点值的表示形式5
Java中的代码:int a = Float.floatToIntBits(123456789012345678901234567890.123456789F); int b = (int) Double.doubleToLongBits(1234567890123456789012345678901234567890.123456789D); // a = 1875342472 // b = 61736672
就是把float和double在内存中的存储形式,用Int32和Long64表示出来的方法。
问题补充:
我之前也摸到了BitConverter,但是没找对方法,谢谢。
但是,怎么似乎没有 SingleToInt32Bits 这个方法???
DoubleToInt64Bits倒是有,double已测试测试成功。
还差float。
问题补充:
我自己找了一段,但是太复杂了,类库里真的没有吗?
int b = new Int32SingleUnion(f).AsInt32; [StructLayout(LayoutKind.Explicit)] private struct Int32SingleUnion { /// <summary> /// Int32 version of the value. /// </summary> [FieldOffset(0)] int i; /// <summary> /// Single version of the value. /// </summary> [FieldOffset(0)] float f; internal Int32SingleUnion(int i) { this.f = 0; // Just to keep the compiler happy this.i = i; } internal Int32SingleUnion(float f) { this.i = 0; // Just to keep the compiler happy this.f = f; } internal int AsInt32 { get { return i; } } internal float AsSingle { get { return f; } } }
2009年6月05日 16:34
3个答案 按时间排序 按投票排序
-
采纳的答案
可以这么用:
int a = BitConverter.ToInt32(BitConverter.GetBytes(14f), 0);
2009年6月05日 23:49
-
呃啊……抱歉抱歉 T T
我只是印象中记得BitConverter有DoubleToInt64Bits方法,没去查文档就回复了……我错了 T T
你找的那段代码已经算是最简单的了……就留着用呗,没坏处。这种办法就是模拟C的时代用union来做类型转换的trick,简单实用。2009年6月05日 18:12
-
用BitConverter.SingleToInt32Bits和BitConverter.DoubleToInt64Bits即可
2009年6月05日 16:49
相关推荐
### C# IEEE754浮点数转换技术详解 #### 一、IEEE754标准简介 IEEE 754是国际电气与电子工程师协会(Institute of Electrical and Electronics Engineers, IEEE)制定的一种浮点数表示标准。该标准定义了浮点数在...
### C# 中 IEEE754 转换 32 位浮点数为十进制数 在电力仪表行业中,经常会遇到需要处理通过 RS485 接口传输的数据,尤其是在读取电力仪表中的浮点数值时。IEEE754 是一种用于表示计算机系统中的实数的标准格式。...
3. **Float到/从字节数组**:`Float`是单精度浮点数,占用32位,符合IEEE 754标准。转换时,使用`BitConverter.ToSingle()`和`BitConverter.GetBytes()`方法。 **字节顺序问题** 在进行字节数组和数值类型之间的...
在计算机科学领域,IEEE754标准是用于表示浮点数的一种广泛接受的规范,它定义了浮点数如何在二进制系统中存储和计算。这个标准在各种编程语言和硬件平台上都被采用,包括C#。对于32位浮点数,IEEE754标准使用单精度...
本篇主要介绍16位、32位以及64位数据如何转换为浮点型(float)和双浮点型(double)。 首先,我们要理解二进制、16进制与浮点数的关系。计算机内部存储数字都是以二进制形式,而16进制是人类更易读的一种表示方式...
IEEE754标准是一个全球广泛采用的浮点数表示法,它定义了如何用二进制形式来存储、运算和交换浮点数。这个标准对于理解和转换不同进制之间的浮点数至关重要。本篇文章将深入探讨基于IEEE754标准将十六进制转换为十...
在计算机内部,浮点数通常是用IEEE 754标准来存储的,分为单精度(float)和双精度(double)两种。单精度浮点数占32位,双精度浮点数占64位。其中,一部分位用来存储符号、指数和尾数,这些部分共同决定了浮点数的...
单精度浮点数(Single)在C#中占用4个字节(32位),按照IEEE 754标准,这32位分为三部分:符号位(1位)、指数部分(8位)和尾数部分(23位)。当我们要将一个浮点数转换为16进制字符串时,实际上是把这32位二进制...
它们的值由一个符号位、指数部分和尾数部分组成,遵循IEEE 754标准。 3. **数据转换**: 在C语言中,数据类型的转换可以通过类型转换函数(如(float)或(double))或直接赋值实现。本程序中,可能涉及将16进制字符...
需要了解IEEE 754浮点数标准,它是大多数现代计算机系统中用于存储浮点数的标准。该标准定义了两种主要格式:单精度(32位)和双精度(64位)。C#中的`float`对应单精度,`double`对应双精度。 - **单精度转换**:...
在大多数计算机系统中,浮点数遵循IEEE 754标准,该标准定义了如何用二进制表示浮点数。一个浮点数由三部分组成:符号位(sign)、指数(exponent)和尾数(mantissa)。浮点数转换为十六进制时,通常先将其转换为二...
在计算机科学中,二进制浮点数是用于表示实数的一种方式,它基于二进制的浮点表示法。二进制浮点数由一个符号位、指数部分和尾数部分组成,常用于存储和计算高精度和/或快速响应的数值。在C#编程语言中,理解和操作...
这种数据类型按照IEEE 754标准进行编码,可以表示从大约1.4e-45到3.4e38的数值范围。在C#编程语言中,32位浮点数通常被表示为`float`或`Single`类型。本程序的目标是将这种32位的二进制浮点数转换为十进制小数。 ...
在C#编程语言中,将浮点型(如`double`或`float`)转换为整型(如`int`)涉及到数值舍取的过程。在处理这种转换时,有两种常见的舍取策略:直接截断和四舍五入。在C#中,默认的浮点型到整型转换是直接截断,即将小数...
`float`在C#中是一个32位的浮点数,按照IEEE 754标准,它分为三个主要部分:符号位(1位)、指数位(8位)和尾数位(23位)。符号位决定数的正负,指数位表示指数的偏移值,而尾数位则存储小数部分。 1. 符号位:第...
- `float`:单精度浮点型,32位。 - `double`:双精度浮点型,64位。 - 使用IEEE 754标准表示。 - **十进制型** - `decimal`:128位数据类型,适合于财务和货币计算。 - **布尔型** - `bool`:表示真(true)或...
在LabVIEW中,可以使用内置的浮点数转换函数,如`Float32 To Integer`和`Integer To Float32`,分别对应于上述两个VI的功能。这两个函数确保了数据在PLC和LabVIEW之间正确无误地传递。 在实际应用中,你可能需要...
- 浮点型:`float`(单精度浮点数,32位),`double`(双精度浮点数,64位)。浮点数用于处理小数部分的数值,通常在科学计算中使用。 - 字符型:`char`,用于存储单个字符,如字母、数字或其他符号,它占16位。 - ...
- 简单类型:有符号整型(sbyte、short、int、long)、无符号整型(byte、ushort、uint、ulong)、Unicode字符型(char)、IEEE浮点型(float、double)、高精度小数型(decimal)以及布尔型(bool)。 - 枚举类型...