convert.toByte舍入浮点数

时间:2016-09-30 08:44:07

标签: c#

我正在编写一个适用于大矩阵的程序。由于缺乏记忆,我将矩阵定义为byte[]。解决了内存不足的问题,但是现在当我想为矩阵的元素赋值时,它告诉我浮点值不能转换为byte(元素的值是float)。因此,使用Convert.ToByte我将浮点值转换为字节。问题是它舍入浮点值,我不想要它。有没有我可以使用的功能,它不会对浮点数进行舍入? 代码的一部分如下:

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

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

2 个答案:

答案 0 :(得分:0)

这在技术上是不可能的。有关详细信息,请参阅此处:https://en.wikipedia.org/wiki/Double-precision_floating-point_format

这实际上是可行的,但是,如果你想存储-5到5之间的数字而且精度很低。

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

答案 1 :(得分:-1)

您是否尝试使用decimal而不是float。根据您尝试使用的小数位数,float可能会尝试舍入甚至可能会产生不可靠的结果。请进一步阅读以了解以下链接中浮点数,双精度数和小数点之间的差异。希望它有所帮助。

Difference between decimal float and double in net