转换.toByte对浮点数进行舍入

本文关键字:舍入 浮点数 toByte 转换 | 更新日期: 2023-09-27 18:09:42

我正在写一个在大矩阵上工作的程序。由于内存不足,我将矩阵定义为byte[]。内存不足的问题得到了解决,但是现在当我想给矩阵的元素赋值时,它告诉我浮点值不能转换为字节(元素的值是浮点的)。因此,使用Convert.ToByte,我将浮点值转换为字节。问题是,它四舍五入浮点值,我不想要它。是否有任何函数,我可以使用,它不四舍五入浮点数?部分代码如下:

static byte[,,] Score = new byte[1501,1501,501];
Score[i, j, att] = Convert.ToByte(2.0 *(Math.Log(calNum())));

其中calnum是计算浮点数的函数

转换.toByte对浮点数进行舍入

这在技术上是不可能的。更多信息请看这里:https://en.wikipedia.org/wiki/Double-precision_floating-point_format

这实际上是可能的,但是,如果你想以较低的精度存储从-5到5的数字。

如果您使用数学,您可能需要查看稀疏矩阵的方向。该矩阵将优化其内部表示,减少内存影响。

您是否尝试使用十进制而不是浮点数?根据您尝试使用的小数位数,float可能会尝试四舍五入,甚至可能会给出不可靠的结果。请进一步阅读下面的链接,了解浮点数、双精度数和十进制数之间的区别。希望能有所帮助。

decimal float和double的区别