2019-04-22到26的一些问题

1、文件压缩后,我和测试同事的电脑解压不了,报下面图的错,其他同事的电脑下载和解压又是好的

原因:文件名中文乱码问题

并不是我解决的,是公司大佬解决的,因为调用的是公司里的一个压缩工具,具体方法就是对ZipOutputStream加上

setEncoding("GBK");

2、IE模式下,textarea被disabled后,框的大小不会随着文本内容自动展开,其他浏览器可以

原因:破IE害人不浅。。。

我就加了个判断,如果是IE,就对里面的内容的行数进行判断,然后将行数乘以2,再用jquery的attr赋rows值给textarea

var str= $("#str").html().split(/\r?\n/).length;
$("#str").attr("rows",(str* 2 < 4 ? 4 : (str* 2)));

3、组织机构代码允许输入带上横杠的内容

说是不需要专门判断这个组织机构代码是否合规,但至少保证:数字字母、以及横杠可加可不加。

于是我先给文本框设了个maxlength是10

然后在判断的js处,判断带横杠就10位,不带就9位,都是数字或者字母:

var valueNo_ = value.replace("-","");
var reg =  /([a-zA-Z0-9]{8})([a-zA-Z0-9])|([-][a-zA-Z0-9])$/;
if(reg.test(value) && valueNo_.length<=9){
    return true;
}

4、Double的数据精准度问题

全部改成了BigDecimal进行计算然后doubleValue()一下

BigDecimal的使用:

Double xxx = (略);
//最精确的将double转bigDecimal(先把double值转成string)
BigDecimal a = new BigDecimal(Double.toString(xxx));
BigDecimal b = new BigDecimal("1.11");
//BigDecimal值之间的加减乘除
BigDecimal c = a.add(b);
c = a.subtract(b);
c = a.multiply(b);
c = a.divide(b);
//对非bigDecimal值的乘除:
c = a.multiply(new BigDecimal("0.7")).setScale(2,BigDecimal.ROUND_HALF_EVEN);
c= a.divide(new BigDecimal("0.7"),2, BigDecimal.ROUND_HALF_EVEN);

转载:BigDecimal.ROUND_HALF_XXX的各种用法(作者:yingchen)

ROUND_HALF_EVEN    银行家舍入法

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;

如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。

注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。

此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。

如果前一位为奇数,则入位,否则舍去。

以下例子为保留小数点1位,那么这种舍入方式下的结果。

1.15>1.2 1.25>1.2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章