遇到double 数目过大,转String变成科学计数法

问题:

  java中,当double数目过大,转出String时,变成了科学记数法的表示。

总结:

  1.项目的存储用的是mysql,mysql的类型和java类型之间存在映射关系,以前关注不多。现在总结一下:

  

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述
           
VARCHAR L+N VARCHAR java.lang.String 12  
CHAR N CHAR java.lang.String 1  
BLOB L+N BLOB java.lang.byte[] -4  
TEXT 65535 VARCHAR java.lang.String -1  
           
INTEGER 4 INTEGER UNSIGNED java.lang.Long 4  
TINYINT 3 TINYINT UNSIGNED java.lang.Integer -6  
SMALLINT 5 SMALLINT UNSIGNED java.lang.Integer 5  
MEDIUMINT 8 MEDIUMINT UNSIGNED java.lang.Integer 4  
BIT 1 BIT java.lang.Boolean -7  
BIGINT 20 BIGINT UNSIGNED java.math.BigInteger -5  
FLOAT 4+8 FLOAT java.lang.Float 7  
DOUBLE 22 DOUBLE java.lang.Double 8  
DECIMAL 11 DECIMAL java.math.BigDecimal 3  
BOOLEAN 1 同TINYINT      
           
ID 11 PK (INTEGER UNSIGNED) java.lang.Long 4  
           
DATE 10 DATE java.sql.Date 91  
TIME 8 TIME java.sql.Time 92  
DATETIME 19 DATETIME java.sql.Timestamp 93  
TIMESTAMP 19 TIMESTAMP java.sql.Timestamp 93  
YEAR 4 YEAR java.sql.Date 91

  2. 对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。

   3. 对于boolen类型,在mysql数据库中,个人认为用int类型代替较好,对bit操作不是很方便,尤其是在具有web页面开发的项目中,表示0/1,对应java类型的Integer较好。

  4. 这次遇到的问题,我用的解决方案就是mysql端用decimal来存储,然后java端用BigDecimal来接收,

    涉及了Decimal的一些用法:

  • decimal转int
BigDecimal a=new BigDecimal(12.88);
int b=a.intValue(); 
  • int 转decimal
BigDecimal bigDecimal = new BigDecimal(int val);

    

  

时间: 2024-10-28 19:08:29

遇到double 数目过大,转String变成科学计数法的相关文章

double转成string时,不以科学计数法表示

用gson解析json串的时候,经常会自动把我想用string表示的内容转换成double,并且还是科学计数法,这一点也不科学,写个方法,格式化一下. public static String parseString(Object str){ String returnValue = ""; try { returnValue = new BigDecimal(String.valueOf(str)).toString(); if(StringUtils.endsWith(return

将258.369 double值转为内存表示(科学计数法)

前言 庖丁解牛 - <<庄子>> 庖丁为文惠君解牛,手之所触, 肩之所倚, 足之所履, 膝之所踦, 砉然向然, 奏刀騞然, 莫不中音, 合于<桑林>之舞, 乃中<经首>之会. 文惠君曰:"嘻, 善哉! 技盍至此乎?" 庖丁释刀对曰:"臣之所好者, 道也, 进乎技矣.始臣之解牛之时, 所见无非牛者.三年之后, 未尝见全牛也.方今之时, 臣以神遇而不以目视, 官知止而神欲行.依乎天理, 批大郤, 导大窾, 因其固然, 技经肯綮之未尝

Java语言中 将double类型不以科学计数法输出

<span style="font-size:18px;"> Double double1 = 1234567899.899; DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");//格式化设置 System.out.println("--------" + decimalFormat.format(double1)); System.out.println(doub

如何使java中double类型不以科学计数法表示

在java中,把一个double或者BigDecimal的小数转换为字符串时,经常会用科学计数法表示,而我们一般不想使用科学计数法,可以通过:DecimalFormat a = new DecimalFormat("#,##0.00000000");        System.out.println(a.format(11111111.0000001000000001));的方式来格式化输出字符串. 对于BigDecimal的小数,如果制定精度<=6, 则可以放心的使用其toS

利用科学计数法初始化double型来处理大数的显示

最近做一款挂机游戏,碰到了一个问题,游戏中玩家攻击力会不断增加,从K增加到M到B到T,然后aa,bb,cc…… 这样就出现了一个问题,我该如何存储玩家的攻击力,乍看之下double型的长度好像也不够了. 我最开始想到的方法是把数值和单位分开,设计一个新的类型来处理,但发现使用起来非常不方便,除非实现大量的功能. 后来找到了一个比较好的办法——用科学计数法来初始化double. 假设玩家当前攻击力是1.08 * 10 ^ 120, 如果试图通过下面这种方式来初始化,使用时就会发现CurrentDp

java中Double类数字太大时页面正常显示而不要用科学计数法

DecimalFormat   format   =   (DecimalFormat)   NumberFormat.getPercentInstance(); format.applyPattern( "#####0 "); String   temp   =   format.format(Double.MAX_VALUE); System.out.println(temp); double   a;   //   test DecimalFormat   df   =    

PHP 如何显示大数字,防止显示为 科学计数法 形式

PHP 数字超过一定长度时,会自动转换为 科学计数法 的形式,如 1.2345678912346E+16: 如何 避免转换,让它原样展示呢? 不过,可以用PHP函数 number_format() 来格式化数字,参考代码如下: $str = number_format(123456789123456789123456, 0, '', ''); print_r($str); 原样输出: 123456789123456789123456 延伸阅读: PHP保留2位小数 格式化小数.浮点数

避免大整数科学计数法

php 是没有bigint的,超过一定长度其实是当做float类型处理的.在表示的时候,会使用科学计数法. 演示code 在客户端执行: php -r "echo 20123456789123456789;" 输出: 2.0123456789123E+19 那么怎么避免这种情况呢?用number_format(). php -r "echo number_format(20123456789123456789,0,'.','');" 输出: 201234567891

算法大神之路----排序(插入排序法)

插入排序法 所谓插入排序法乃是将一个数目插入该占据的位置. 输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕. 代码示例: import java.util.Random; /** * 算法大神之路----排序(插入排序法) */ public class Study03 { public static void main(String[] args) { //新建一个数组 int[] arr = n