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

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