我的项目中有一个功能,可以乘以3个不同的大小数。
有时,结果会给出一些非常大的数字,如:
213215648783612154.334
or
421342342342342344.123
事情是:保留此值记录的列定义为NUMBER(8,3)。有没有办法通过做一些舍入操作来减少这个数字的长度?我真的不想重新定义该列,因为它已在系统的其他部分使用。
答案 0 :(得分:3)
您的系统中存在基本设计或逻辑缺陷。
如果你有一个期望值为NUMBER(8,3)
的数据库,那么就说"我有8位数的空格,其中3位是小数"。可以存储在该列中的最大值是99999.999
。
您无法存储任何更大的值。周期。
那么,问题是什么?之一:
213215648783612154.334
只是简单的......或者您修复哪一个取决于您的具体情况。
答案 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