Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
tml文件即超文本標(biāo)記語言文件文檔,是擴(kuò)展名、后綴名為html的文件。超文本標(biāo)記語言的結(jié)構(gòu)包括頭部分(Head)、和主體部分(Body),其中頭部(head)提供關(guān)于網(wǎng)頁的信息,主體(body)部分提供網(wǎng)頁的具體內(nèi)容。html文件能夠被多種網(wǎng)頁瀏覽器讀取,傳遞。我們可以使用電腦上自帶的記事本進(jìn)行編輯htm文件。那么html文件刪除如何恢復(fù)?
通常情況下當(dāng)您從電腦存儲設(shè)備中刪除html文件時,該html文件會保存在回收站中。 可以根據(jù)需要通過單擊還原選項將其還原。 但是不好運(yùn)的情況下,如果您清空回收站或文件未經(jīng)過回收站、或使用永久刪除鍵Shift + Delete將文件刪除怎么恢復(fù)呢?我們可以通過使用數(shù)據(jù)恢復(fù)軟件來恢復(fù)。
html文件刪除恢復(fù)步驟如下:
1、首先到官網(wǎng)下載并安裝好云騎士數(shù)據(jù)恢復(fù)軟件(注意:軟件不能安裝在丟失盤中),打開云騎士數(shù)據(jù)恢復(fù)軟件,根據(jù)需要選擇恢復(fù)功能,這里選擇場景模式下的誤刪除文件。
2、選擇好以后選擇需要恢復(fù)數(shù)據(jù)的分區(qū),如果是外接設(shè)備則可以將它插入電腦中,或者通過讀卡器插入電腦,點擊開始掃描。
3、掃描結(jié)束以后,你會發(fā)現(xiàn)有很多數(shù)據(jù),這時我們可以通過文件類型進(jìn)行查找,這里勾選其他文件類型,然后找到了需要的html格式文件。
因為文件丟失后有可能會因各種原因受損,所以遵循先預(yù)覽再恢復(fù)原則,通過預(yù)覽模式判斷文件是否正常再進(jìn)行恢復(fù)。對于無法預(yù)覽或者不支持預(yù)覽的是無法判斷數(shù)據(jù)是好的還是壞的,只能恢復(fù)出來才能進(jìn)行查看的。
4、接著在需要恢復(fù)的html文件前面進(jìn)行勾選,選擇好以后點擊立即恢復(fù)按鈕。
5、彈出設(shè)置文件路徑窗口,將文件存儲在安全區(qū)域中(如果存儲盤不夠內(nèi)存,可以外接其他設(shè)備進(jìn)行存儲),點擊確定按鈕。
6、耐心等待文件導(dǎo)出完成,點擊查看即可查看恢復(fù)出來的html文件了。
知識普及:
導(dǎo)致html文件丟失常見幾種原因:
采用來源于Internet的各種各樣沒經(jīng)驗證的第三方應(yīng)用程序也許會使您的html文件遭遇風(fēng)險。
偶爾在下載那些應(yīng)用程序時,某些惡意病毒也許會進(jìn)入系統(tǒng)并破壞html文件結(jié)構(gòu),亦或它們也許會刪除桌面上的所有html文件,因此致使大量數(shù)據(jù)丟失。
在重新分區(qū)或調(diào)整硬盤大小時,那些html文件也許會遺失。在重新分區(qū)時,一個重大的錯誤也會刪除存儲了所必需文件的分區(qū),例如DOC、PPT、XLSX和HTML。
總結(jié):以上就是html文件刪除恢復(fù)教程了,如果在軟件使用過程中有不懂的問題,可以咨詢專業(yè)的在線客服人員為您解答~
本文來自 yqssjhf.com>> 創(chuàng)作不易,轉(zhuǎn)載請注明出處。
天財務(wù)一同事打開excel文件后發(fā)現(xiàn)用了好幾個月的某個表格打開后出錯了,里面的內(nèi)容丟失了一部分,就是關(guān)鍵性的列內(nèi)容不顯示了,如下圖
部分單元格內(nèi)容丟失
那么遇到這種情況這個表格還有救嗎?這得看是哪種錯誤導(dǎo)致的,我們把表格復(fù)制到本地,然后打開。
會出現(xiàn)一個錯誤提示,主要是說有 XML 錯誤的 /xl/sharedStrings.xml,也就是sharedStrings.xml文件出錯了,它是一個共享的單元格內(nèi)容文件。
我們先把excel文件復(fù)制一份,然后把xlsx后綴更改為.rar,并進(jìn)行解壓縮,所有的xlsx文件都是由一堆文件組成的,可以解壓為原始的xml文件,如下圖。
xml文件語法非常嚴(yán)格,把sharedStrings.xml文件用瀏覽器打開看看會出現(xiàn)什么樣的錯語提示,然后再根據(jù)提示進(jìn)行處理,其實在打開Excel文件的時候就提醒我們了,主要是開始標(biāo)記與結(jié)束標(biāo)記不匹配導(dǎo)致的,開始與結(jié)束標(biāo)記為<si> </si>,只要會點html的話就很容易理解了。
好了,對于這個文件有兩種修復(fù)方法
可以使用第三方的軟件進(jìn)行修復(fù)此問題,但是試了好多個修復(fù)工具后發(fā)現(xiàn)只有XLSX Open File Tool才能準(zhǔn)確的修復(fù),但是它是收費(fèi)的,不付費(fèi)只能看不能保存,最便宜價格199元,如果你的文件比較小,丟的內(nèi)容也不多,對比著修復(fù)的內(nèi)容自己填進(jìn)去就行了,如果文件大那就購買軟件修復(fù)吧,留著以后還能用。
如果不想花錢還想要修復(fù)文件,那么可以手工進(jìn)行修復(fù),就是把sharedStrings.xml文件中的開始和結(jié)束標(biāo)記補(bǔ)全就可以了,聽起來很復(fù)雜,其實很簡單,<si>和</si>是一一對應(yīng)的,兩者的數(shù)量一樣多才對。
第一步:可以使用記事本或vs code編輯器來打開sharedStrings.xml文件,然后進(jìn)行查找和替換,把所有的</r><si>替換成</r></si><si>,然后保存。
第二步:把修改好的sharedStrings.xml文件替換掉壓縮包中的此文件。
第三步:把rar的后綴名再改回xlsx。
雙擊打開試試,大多數(shù)情況下就能正常打開你的Excel文件了。
通過在網(wǎng)上查找資料發(fā)現(xiàn)導(dǎo)致這種原因的問題有很多,大致如下
1、表格中不要使用大量的外部鏈接
2、不要使用復(fù)雜的引用,能不引用就盡量別引用
3、不要從網(wǎng)頁或軟件導(dǎo)出的表格中直接復(fù)制粘貼,一些樣式會導(dǎo)致此問題
4、不要設(shè)置復(fù)雜的格式,用多大的地方就設(shè)置多少的格式,不要設(shè)置格式時選擇全表范圍
5、有網(wǎng)友說搜狗拼音會導(dǎo)致此問題,盡量注意吧。
項目開發(fā)中,你一定遇到過精度丟失的問題!比如某個無良的后端返回了一個超16位的數(shù)字訂單號,比如0.1+0.2 != 0.3等等:
let a = 0.1235678912345623456
console.log(a)
let b = 256.1235678912345623456
console.log(b)
let c = 0.1
let d = 0.2
console.log(c + d)
let e = 2.55
let f = 1.55
console.log(e.toFixed(1))
console.log(f.toFixed(1))
01
精度丟失的原因
是什么原因造成的捏?
嗯?
大道理咱也不會說,問就是一句話回復(fù):
在十進(jìn)制轉(zhuǎn)二進(jìn)制的過程中,因js存儲位數(shù)有限制,末位就會0舍1入取近似值,從而導(dǎo)致再轉(zhuǎn)回十進(jìn)制時產(chǎn)生誤差。
02
如何解決
使用toPrecision
這個方法主要用于純展示。先用toPrecision保留一定位數(shù)的經(jīng)度,再通過parseFloat展示。
例如:
console.log(parseFloat(0.30000000000000004.toPrecision(12)))
這個12是精度默認(rèn)值或者說是一個經(jīng)驗值,12位一般都能解決0000...1和0000...9的問題。一般不適合浮點數(shù)的運(yùn)算。
先轉(zhuǎn)整數(shù)進(jìn)行運(yùn)算,再轉(zhuǎn)成小數(shù)
這種方式是我之前浮點運(yùn)算時經(jīng)常用到的方法。我們拿0.1+0.2的運(yùn)算來舉例:
let a = (0.1*10 + 0.2*10) / 10
console.log(a) //0.3
但這種方法也不是萬能的,有時候也會失精:
console.log(33.41*100) //3340.9999999999995
console.log(2.55*100) //254.99999999999997
真是防不勝防啊!這時候我們也可以使用Math.round()方法來達(dá)到我們的目的,如下:
console.log(Math.round(33.41*100)) //3341
console.log(Math.round(2.55*100)) //255
console.log((Math.round(0.1*10) + Math.round(0.2*10)) / 10) //0.3
先加上1e-14或Number.EPSILON再取值
給浮點數(shù)加上一個極小的數(shù)就可以達(dá)到目的。獲取極小的數(shù)有兩種方式:
先來看看Number.EPSILON是什么?
console.log(Number.EPSILON) //2.220446049250313e-16
console.log(Number.EPSILON.toFixed(20)) //0.00000000000000022204
這兩種方式都可以,看自己的喜好啦!
let a = 0.1235678912345623456
console.log((a+1e-14).toFixed(1)) //0.1
console.log((0.1 + Number.EPSILON + 0.2 + Number.EPSILON).toFixed(1))
//0.3
第三方庫
第三方庫主要介紹以下四種:
安裝:
npm install --save bignumber.js
引入:
import BigNumber from 'bignumber.js';
使用:
const a = new BigNumber(0.2);
const b = new BigNumber(0.1)
let c = a.plus(b)
console.log(c) //BigNumber {s: 1, e: -1, c: Array(1)}
console.log(c.toString()) //0.3
console.log(c.toNumber()) //0.3
官網(wǎng):https://mikemcl.github.io/bignumber.js/
安裝:
npm install number-precision --save
引入:
import NP from 'number-precision';
使用:
console.log(NP.strip(0.09999999999999998)); // 四舍五入:=0.1
console.log(NP.round(0.105, 2)) //取2位小數(shù),四舍五入:=0.11
console.log(NP.plus(2.3, 2.6)); // 加:=4.9
console.log(NP.minus(1.0, 0.9)); // 減:=0.1
console.log(NP.times(3, 0.3)); // 乘:=0.9
console.log(NP.divide(0.9, 0.3)); // 除:=3
console.log(NP.plus(0.1, 0.2))
安裝:
npm install --save decimal.js
引入:
import Decimal from "decimal.js"
使用:
console.log(Decimal(0.1).add(Decimal(0.2))); // 加: {s: 1, e: -1, d: Array(1), constructor: ?}
console.log(Decimal(0.1).sub(Decimal(0.2))); // 減:{s: -1, e: -1, d: Array(1), constructor: ?}
console.log(Decimal(0.1).mul(Decimal(0.2))); // 乘:{s: 1, e: -2, d: Array(1), constructor: ?}
console.log(Decimal(0.1).div(Decimal(0.2))); // 除:{s: 1, e: -1, d: Array(1), constructor: ?}
上面的結(jié)果是Decimal 對象,取值需要Number 或 String轉(zhuǎn)換
官網(wǎng):http://mikemcl.github.io/decimal.js/
安裝:
npm install json-bigint
引入:
import JSONBigInt from 'json-bigint';
const JSONBigIntNative = JSONBigInt();
使用:
let json = "{\"order\":258431607934229718,\"price\":1.258431607934229718,\"no\":123456}"
const obj1 = JSON.parse(json)
const obj2 = JSONBigIntNative.parse(json)
console.log(obj1) //{order: 258431607934229730, price: 1.2584316079342297, no: 123456}
console.log(obj2.order.toString()) //258431607934229718
console.log(obj2.price.toString()) //1.258431607934229718
console.log(obj2.order.toNumber()) //258431607934229730
console.log(obj2.price.toNumber()) //1.2584316079342297
主要是把大數(shù)據(jù)轉(zhuǎn)成字符串。其實關(guān)于這一點,如果后端經(jīng)驗豐富的話,自然會給前端返回字符串,也無需前端轉(zhuǎn)換。不過呢,可能前端的技能的提升也就是從無經(jīng)驗的后端開始的噢!
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。