oracle 保留小数问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 保留小数问题相关的知识,希望对你有一定的参考价值。

如图,是一个number类型的数除以一个很大的数得到的。。怎么能让他转换成正常的数字呢? round也不行。。这就是round后的结果

参考技术A 数据类型定义一下,例如number(p.s)
数据的总位数是p
对s分2种情况:
1. s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
2. s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
123.2564 NUMBER 123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error
1234.9876 NUMBER(6) 1235
12345.345 NUMBER(5,-2) 12300
1234567 NUMBER(5,-2) 1234600
12345678 NUMBER(5,-2) Error
123456789 NUMBER(5,-4) 123460000
1234567890 NUMBER(5,-4) Error
12345.58 NUMBER(*, 1) 12345.6
0.1 NUMBER(4,5) Error
0.01234567 NUMBER(4,5) 0.01235
0.09999 NUMBER(4,5) 0.09999
number(10,2)就是总共10位数,并精确到小数点后两位。希望对你有帮助。
参考技术B number类型最大值是10的28次方-1,有效位是15。当数值很大或很小时(不考虑正负),在满足数值大小原则基础上,尽可能按科学计数法显示。看一下下面的例子:
SQL> select 0.00000000000004 n1,0.10000000000004 n2 from dual;
n1 n2
----------- -------------------------
4E-14 0.10000000000004
n2的值无法用科学计数法显示,因为它要保证14位有效数是正确的。本回答被提问者和网友采纳
参考技术C number(10,2) :10指数字中的有效位,2值小数点右边的位数 参考技术D 看不见图,但是我猜的到是什么问题。
你定义的变量没定义成可带小数的吧。例如number(10,2)追问

10,2 怎么解释

第5个回答  2012-11-29 存为varchar类型 就解决了。

jsp小数显示问题 例如 我在oracle 数据库中查询出来的是 0.01 但是在jsp页面上就显示成 .01 没有前面的0

控制保留几位有效小数的js函数
//Code CreateBy abandonship 2007.03.12
function FormatAfterDotNumber( ValueString, nAfterDotNum )

var ValueString,nAfterDotNum ;
  var resultStr,nTen;
  ValueString = ""+ValueString+"";
  strLen = ValueString.length;
  dotPos = ValueString.indexOf(".",0);
  if (dotPos == -1)

    resultStr = ValueString+".";
    for (i=0;i<nAfterDotNum ;i++)

      resultStr = resultStr+"0";
  
    return resultStr;
  
  else

    if ((strLen - dotPos - 1) >= nAfterDotNum )
      nAfter = dotPos + nAfterDotNum + 1;
      nTen =1;
      for(j=0;j<nAfterDotNum ;j++)
        nTen = nTen*10;
      
      resultStr = Math.round(parseFloat(ValueString)*nTen)/nTen;
      return resultStr;
    
    else
      resultStr = ValueString;
      for (i=0;i<(nAfterDotNum - strLen + dotPos + 1);i++)
        resultStr = resultStr+"0";
      
      return resultStr;
    
  


应用时只需要FormatAfterDotNumber( ’数字字符串’, 保留小数位数 );
for example:

<html>
<head>
<SCRIPT LANGUAGE="JAVAscript">
<!--调用上面的函数 -->
</script>
</head>
<body>
<input type="text" name="strTemp">
<input type="button" onclick="alert( FormatAfterDotNumber( document.all. strTemp.value), 保留小数位)" >
</body>
</html>追问

我的那个在数据库里的时候是0.01 但是jsp页面就是 .01了 这个跟你说的一样是吗?还有 我的接值 是用
接值的 到时候怎么调用啊

参考技术A 先转成字符串,然后转成单精度型

以上是关于oracle 保留小数问题的主要内容,如果未能解决你的问题,请参考以下文章

Oracle小数点的实际保留问题的4方案

oracle保留两位小数

Oracle数据库中的如何保留两位小数 并且在java中保留两位小说插入数据表中

oracle:求百分比,保留小数点后两位,不会出现.01的情况,也不会出现#######的情况,写一条sql语句

oracle语句中,某个段值想四舍五入,并且保留小数点的后2位,是否有函数可以直接写出来;

如何在Oracle数据库中保留小数点后两位 而且在java中保留两位插入到数据表中