通过在Java中舍入减少数字长度

时间:2014-10-03 14:31:03

标签: java

我的项目中有一个功能,可以乘以3个不同的大小数。

有时,结果会给出一些非常大的数字,如:

213215648783612154.334 
or
421342342342342344.123

事情是:保留此值记录的列定义为NUMBER(8,3)。有没有办法通过做一些舍入操作来减少这个数字的长度?我真的不想重新定义该列,因为它已在系统的其他部分使用。

3 个答案:

答案 0 :(得分:3)

您的系统中存在基本设计或逻辑缺陷。

如果你有一个期望值为NUMBER(8,3)的数据库,那么就说"我有8位数的空格,其中3位是小数"。可以存储在该列中的最大值是99999.999

您无法存储任何更大的值。周期。

那么,问题是什么?之一:

  1. 你的程序逻辑是错误的,它正在计算的值如213215648783612154.334只是简单的......或者
  2. 您的数据库实现设计糟糕,因为它应该能够存储比计划更大的值。
  3. 您修复哪一个取决于您的具体情况。

答案 1 :(得分:0)

答案是:不可能以某种有意义的方式进行回合。因为最大值为99999.999

您可以尝试编码而不是舍入。但是使用此列的所有其他代码必须知道编码。 例如,您可以使用前5个数字作为尾数,最后3个作为指数(并在某处隐藏符号)。但是如果你尝试的话,我想看看你同事的面孔。

答案 2 :(得分:0)

确定你可以切断一些数字,即使它可能会给你一些错误的数据。

String number= Mynumber.tostring(); //assuming mynumber is the object that stores the number
number= number.substring( (number.length()-(number.length()-9)) , number.length()); //adding 1 to 8 because of the '.'
System.out.pritnln(number);

输入=

213215648783612154.334 

输出:

12154.334