你這幾個(gè)字段是NUMBER型的 由于值太大了 系統(tǒng)自動轉(zhuǎn)換成科學(xué)計(jì)數(shù)法。這是正常的
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、萊蕪ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的萊蕪網(wǎng)站制作公司
hr_s_pre 正解
number(14,4)是精確的存儲方式。
存儲 999999.9999 肯定不會會出現(xiàn) 四舍五入 的情況
應(yīng)該是你自己的處理有問題吧
我這樣試過了,肯定沒有問題的:
create table t_test1(a number(14,4));
insert into t_test1 values(999999.9999);
select * from t_test1;
drop table t_test1;
這個(gè)不是存儲的問題,使輸出顯示的問題,你在輸出格式化的時(shí)候要求必須顯示兩位小數(shù)就行了
先將數(shù)據(jù)轉(zhuǎn)換為numeric類型,保留4位小數(shù)點(diǎn),由零點(diǎn)幾變?yōu)榘俜痔柷斑叺臄?shù)字,再轉(zhuǎn)換為varchar類型,然后再加'%'
如:
select ml as 毛利,sshje as 實(shí)收金額,
cast(cast(ml/sshje as numeric(4,4))*100 as varchar(20)) + '%' as 利潤率
from chasalldayhz
oracle to_char(小數(shù)) 默認(rèn)如此 oracle就是這樣的
to_char用法本身也是需要格式化的,只不過我們平時(shí)對于普通字符都是直接to_char而已,對于時(shí)間,錢幣等都是需要格式化的,對于小數(shù)不格式化就是沒有前面的零的,可以這樣格式化
select to_char(0.1,'fm9999990.9999') from dual;