久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Java:使用雙精度不準確

Java: Inaccuracy using double(Java:使用雙精度不準確)
本文介紹了Java:使用雙精度不準確的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

可能重復:
在java中使用雙精度保持精度
Java 程序中奇怪的浮點行為

我正在制作一個直方圖類,但遇到了一個奇怪的問題.

I'm making a histogram class, and I'm encountering a weird issue.

這是該類的基礎知識,還有更多方法,但與問題無關.

Here are the basics of the class, there are more methods but they aren't relevant to the issue.

private int[] counters;
private int numCounters;
private double min, max, width;

public Histogram(double botRange, double topRange, int numCounters) {
    counters = new int[numCounters];
    this.numCounters = numCounters;
    min = botRange;
    max = topRange;
    width = (max - min) / (double) numCounters;
}

public void plotFrequency() {
    for (int i = 0; i < counters.length; i++) {
        writeLimit(i * width, (i + 1) * width);
        System.out.println(counters[i]);
    }
}

private void writeLimit(double start, double end) {
    System.out.print(start + " <= x < " + end + "		");
}

當我繪制頻率時會出現問題.我創建了 2 個實例.新直方圖(0, 1, 10);新直方圖(0, 10, 10);

the problem happens when I plot the frequencies. I've created 2 instances. new Histogram(0, 1, 10); new Histogram(0, 10, 10);

這是他們輸出的內容.

Frequecy
0.0 <= x < 0.1      989
0.1 <= x < 0.2      1008
0.2 <= x < 0.30000000000000004      1007
0.30000000000000004 <= x < 0.4      1044
0.4 <= x < 0.5      981
0.5 <= x < 0.6000000000000001       997
0.6000000000000001 <= x < 0.7000000000000001        1005
0.7000000000000001 <= x < 0.8       988
0.8 <= x < 0.9      1003
0.9 <= x < 1.0      978

Frequecy
0.0 <= x < 1.0      990
1.0 <= x < 2.0      967
2.0 <= x < 3.0      1076
3.0 <= x < 4.0      1048
4.0 <= x < 5.0      971
5.0 <= x < 6.0      973
6.0 <= x < 7.0      1002
7.0 <= x < 8.0      988
8.0 <= x < 9.0      1003
9.0 <= x < 10.0     982    

所以我的問題是,為什么我在第一個示例中得到了非常長的小數限制,而在第二個示例中沒有?

So my question is, why am I getting the really long decimal limits in the first example, but not the second one?

推薦答案

有些小數不能用雙精度值精確表示.0.3 是這些值之一.

Some decimals cannot be exactly represented by double values. 0.3 is one of those values.

所有小于某個數字(我忘記了)的整數值恰好有一個雙精度值的精確表示,所以你看不到近似值.

All integer values less than a certain number (I forget which) happen to have an exact representation by a double value, so you don't see the approximation.

考慮我們如何看待數字:數字 123 表示為 (1 * 100) + (2 * 10) + (3 * 1).我們使用 10 作為我們的基礎.二進制數使用兩個.因此,當您查看數字的分數時,如何通過添加 2 的單個冪來表示 0.3?你不能.你能想到的最好的值大約是 0.30000000000000004(我必須查看確切的二進制數字才能知道它是如何達到的).

Consider how we think of numbers: the number 123 is represented as (1 * 100) + (2 * 10) + (3 * 1). We use 10 as our base. Binary numbers use two. So when you look at fractions of a number, how could you represent 0.3 by adding individual powers of 2? You can't. The best you can come up with is about 0.30000000000000004 (I'd have to see the exact binary digits to see how it reaches that).

這篇關于Java:使用雙精度不準確的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to wrap text around components in a JTextPane?(如何在 JTextPane 中的組件周圍環繞文本?)
MyBatis, how to get the auto generated key of an insert? [MySql](MyBatis,如何獲取插入的自動生成密鑰?[MySql])
Inserting to Oracle Nested Table in Java(在 Java 中插入 Oracle 嵌套表)
Java: How to insert CLOB into oracle database(Java:如何將 CLOB 插入 oracle 數據庫)
Why does Spring-data-jdbc not save my Car object?(為什么 Spring-data-jdbc 不保存我的 Car 對象?)
Use threading to process file chunk by chunk(使用線程逐塊處理文件)
主站蜘蛛池模板: 日本在线观看视频 | 日本在线视频一区二区 | 日本在线网站 | 高清久久 | 这里有精品| 欧美韩一区二区 | 国产欧美精品一区二区 | 久久久久国产一区二区三区 | 午夜在线小视频 | 精品国产1区2区3区 在线国产视频 | 欧美日韩视频网站 | 午夜精品久久久久久久久久久久 | 日韩欧美专区 | 免费视频二区 | 国产999精品久久久久久 | 精品视频在线观看 | 欧美8一10sex性hd | 亚洲精品一区二区三区丝袜 | 中文日韩字幕 | 欧美福利视频 | 美女天堂在线 | 欧美日韩亚洲三区 | 欧美美女被c | 免费成年网站 | 波多野结衣亚洲 | 久久r精品 | 日韩高清国产一区在线 | 99精品免费久久久久久久久日本 | 日韩视频精品在线 | 精品国产区 | 亚洲欧美精品在线 | 韩日一区二区三区 | 999在线精品| 日本a∨精品中文字幕在线 亚洲91视频 | 日韩在线| 欧美一级久久 | 久久久一区二区三区四区 | 国产精品视频一二三区 | 九九综合| 美女黄18岁以下禁止观看 | 91性高湖久久久久久久久_久久99 |