日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于数据精度的一些事

發(fā)布時(shí)間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于数据精度的一些事 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 基礎(chǔ)數(shù)據(jù)類型

  • ????? 大家都知道,Java中表示小數(shù)的基本類型有float, double, 如果你想計(jì)算0.3 - 0.1,很遺憾答案并不是0.2,有些人會(huì)說,用BigDecimal就可以啦,float和double就是會(huì)存在精度問題的。本文想探究一下,為什么, 為什么會(huì)無法得到正確答案。

    先講一些題外話,十進(jìn)制和二進(jìn)制。

    計(jì)算機(jī)的世界是二進(jìn)制,0和1組成,

    二進(jìn)制轉(zhuǎn)十進(jìn)制不在贅述,高中就學(xué)過的;

    十進(jìn)制轉(zhuǎn)二進(jìn)制,看下這個(gè)圖, 應(yīng)該也比較清楚了:

    主要來看一下,十進(jìn)制小數(shù)怎么轉(zhuǎn)化為二進(jìn)制(如果是3.45這類的小數(shù)拆分為3 和0.45,3按照上面的轉(zhuǎn)換方式,0.45按照如下方式)。

    這里,底是2。舉例十進(jìn)制0.1轉(zhuǎn)為二進(jìn)制:

     結(jié)果:?? 0.0

    1. 0.1 * 2 = 0.2 整數(shù)0為二進(jìn)制結(jié)果的第一位,即0.0;小數(shù)0.2作為源,繼續(xù)執(zhí)行

    2. 0.2 * 2 = 0.4 整數(shù)0為二進(jìn)制結(jié)果的第二位,即0.00;小數(shù)0.4作為源,繼續(xù)執(zhí)行

    3. 0.4 * 2 = 0.8 整數(shù)0為二進(jìn)制結(jié)果的第三位,即0.000;小數(shù)0.8作為源,繼續(xù)執(zhí)行

    4. 0.8 * 2 = 1.6 整數(shù)1為二進(jìn)制結(jié)果的第四位,即0.0001;小數(shù)0.6作為源,繼續(xù)執(zhí)行

    5. 0.6 * 2 = 1.2 整數(shù)1為二進(jìn)制結(jié)果的第四位,即0.00011;小數(shù)0.2作為源,繼續(xù)執(zhí)行

    ......

    最后執(zhí)行下去,發(fā)現(xiàn)0.1轉(zhuǎn)換為二進(jìn)制為(0.00011001100110011...)2

    ?所以,十進(jìn)制的0.1計(jì)算機(jī)無法精確表示。因此,0.3 - 0.1得到的就不是精確值了。不過如果你用0.5 - 0.125是可以得到0.375的,為什么呢?因?yàn)?#xff0c;2-1,2-2,2-3這些是可以精確表示的。

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/studentytj/p/9249778.html

    總結(jié)

    以上是生活随笔為你收集整理的关于数据精度的一些事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。