jsp中Double類數字太大時頁面正常顯示而不要用科學計數法


1.在java后台中進行轉換

a.使用BigDecimal類

double num=8.2347983984297E7;
String str=new BigDecimal(num).toString();
 
注意:以上方式轉換之后的可能不是你想要的模樣,而是醬紫——82347983.9842970073223114013671875,原因請參考下方用法鏈接。 
想要數值恢復原樣需要使用BigDecimal的String參數構造,而不是上面的Double參數構造,解決方案如下(注意紅色部分):
 
方式A:
double num=8.2347983984297E7;
String str=new BigDecimal(num+"").toString();
方式B:
Double num=8.2347983984297E7;String str=new BigDecimal(num.toString()).toString();
結果就成了你想要的樣子:82347983.984297

b.使用DecimalFormat類

double num=8.8888888E10;
String str=new DecimalFormat("0.00").format(num);//注意,這種方式是保留幾位小數  

2.在jsp頁面中進行轉換

a.使用jstl標簽fmt:formatNumber

導入:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
使用 :<fmt:formatNumber value="8.8888888E10" pattern="#.##" minFractionDigits="2" > </fmt:formatNumber>  
 

<fmt:formatNumber>標簽用於格式化數字,百分比,貨幣。

語法格式

<fmt:formatNumber
  value="<string>" type="<string>" pattern="<string>" currencyCode="<string>" currencySymbol="<string>" groupingUsed="<string>" maxIntegerDigits="<string>" minIntegerDigits="<string>" maxFractionDigits="<string>" minFractionDigits="<string>" var="<string>" scope="<string>"/>

屬性

<fmt:formatNumber>標簽有如下屬性:

屬性 描述 是否必要 默認值
value 要顯示的數字
type NUMBER,CURRENCY,或 PERCENT類型 Number
pattern 指定一個自定義的格式化模式用與輸出
currencyCode 貨幣碼(當type="currency"時) 取決於默認區域
currencySymbol 貨幣符號 (當 type="currency"時) 取決於默認區域
groupingUsed 是否對數字分組 (TRUE 或 FALSE) true
maxIntegerDigits 整型數最大的位數
minIntegerDigits 整型數最小的位數
maxFractionDigits 小數點后最大的位數
minFractionDigits 小數點后最小的位數
var 存儲格式化數字的變量 Print to page
scope var屬性的作用域 page

如果type屬性為percent或number,那么您就可以使用其它幾個格式化數字屬性。maxIntegerDigits屬性和minIntegerDigits屬性允許您指定整數的長度。若實際數字超過了maxIntegerDigits所指定的最大值,則數字將會被截斷。

有一些屬性允許您指定小數點后的位數。minFractionalDigits屬性和maxFractionalDigits屬性允許您指定小數點后的位數。若實際的數字超出了所指定的范圍,則這個數字會被截斷。

數字分組可以用來在每三個數字中插入一個逗號。groupingIsUsed屬性用來指定是否使用數字分組。當與minIntegerDigits屬性一同使用時,就必須要很小心地來獲取預期的結果了。

您或許會使用pattern屬性。這個屬性可以讓您在對數字編碼時包含指定的字符。接下來的表格中列出了這些字符。

符號 描述
0 代表一位數字
E 使用指數格式
# 代表一位數字,若沒有則顯示 0,前導 0 和追尾 0 不顯示。
. 小數點
, 數字分組分隔符
; 分隔格式
- 使用默認負數前綴
% 百分數
? 千分數
¤ 貨幣符號,使用實際的貨幣符號代替
X 指定可以作為前綴或后綴的字符
' 在前綴或后綴中引用特殊字符


<h3>數字格式化:</h3> <c:set var="balance" value="120000.2309" /> <p>格式化數字 (1): <fmt:formatNumber value="${balance}" type="currency"/></p> <p>格式化數字 (2): <fmt:formatNumber type="number" maxIntegerDigits="3" value="${balance}" /></p> <p>格式化數字 (3): <fmt:formatNumber type="number" maxFractionDigits="3" value="${balance}" /></p> <p>格式化數字 (4): <fmt:formatNumber type="number" groupingUsed="false" value="${balance}" /></p> <p>格式化數字 (5): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p> <p>格式化數字 (6): <fmt:formatNumber type="percent" minFractionDigits="10" value="${balance}" /></p> <p>格式化數字 (7): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p> <p>格式化數字 (8): <fmt:formatNumber type="number" pattern="###.###E0" value="${balance}" /></p> <p>美元 : <fmt:setLocale value="en_US"/> <fmt:formatNumber value="${balance}" type="currency"/></p> </body> </html>

運行結果如下:

數字格式化: 格式化數字 (1): 120,000.23 格式化數字 (2): 000.231 格式化數字 (3): 120,000.231 格式化數字 (4): 120000.231 格式化數字 (5): 023% 格式化數字 (6): 12,000,023.0900000000% 格式化數字 (7): 023% 格式化數字 (8): 120E3 美元 : $120,000.23

b.使用js腳本

var num=8.8888888E10;
var str=parseFloat(num).toString();
本篇引用自:
http://blog.csdn.net/NikiHou/article/details/78615065,
http://www.runoob.com/jsp/jstl-format-formatnumber-tag.html
自己存下來慢慢學習
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM