久久久久久久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(使用線程逐塊處理文件)
主站蜘蛛池模板: 国产乱码精品一区二区三区中文 | 欧美日韩在线一区 | 免费一级欧美在线观看视频 | 国产精品99久久久久久久久久久久 | 国产一区二区自拍 | av乱码| 亚洲精品二三区 | 成人三级网址 | www.久久.com| 亚州精品天堂中文字幕 | 日韩中文在线 | 日韩精品一区二区三区中文在线 | 欧美福利网站 | 拍真实国产伦偷精品 | 精品久久国产视频 | 精品二区视频 | av在线免费观看网址 | 亚洲va欧美va天堂v国产综合 | 中文字幕电影在线观看 | 久久久久久艹 | 在线日韩 | 国产精品久久久久久网站 | 99re视频 | 美女在线一区二区 | 午夜精品一区二区三区三上悠亚 | 国产亚洲黄色片 | 精品一区在线 | 国产精品亚洲一区 | 国产乱码精品一区二区三区忘忧草 | 羞羞视频在线观看免费观看 | 国产精品久久 | 麻豆一区 | 一级毛片免费视频观看 | 男女网站免费 | 日日碰狠狠躁久久躁婷婷 | 久久人爽 | 亚洲欧美激情视频 | 日本久久精 | 蜜臀久久 | 午夜免费视频观看 | 国产一区二区三区久久久久久久久 |