D o u b l e类型是不是有BUG啊!或者是缺陷?有原码!

kisslan 2009-08-27 10:16:16

JfreeChart 中 我写的数据是写0。70显示出来是0。7;写0。900显示出来是0。900

然后我自己做了一个测试:System.out.println(_double);出来结果是10.0
后面的精度都没出来.我知道可以转换成string或者大数字或者textformt可以打印出需求的精度.
但是如果有一个api就是要传double类型的,并且我希望能保证这个double类型的精度,如果是0也不去掉.有办法吗?


就是希望输出结果是10.00并且输出(system.out)的类型是double类型而不是其他任何类型.有人能作到吗?


public static void main(String[] args) {

double _double = 10.00d;
System.out.println(_double);
}




JfreeChart 我写的数据是写0。70显示出来是0。7;写0。900显示出来是0。900

下面代码可以直接运行.






import java.text.NumberFormat;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BarChart3DDemo4 extends ApplicationFrame {

public BarChart3DDemo4(String title) {
super(title);
CategoryDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}

private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(0.70, "写0。70显示出来是0。7", "Robert");
dataset.addValue(0.900, "写0。900显示出来是0。900", "Mary");
return dataset;
}

private static JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart3D("Student Grades", // chart
// title
"Students", // domain axis label
"Grade", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
);

CategoryPlot plot = (CategoryPlot) chart.getPlot();
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setNumberFormatOverride(NumberFormat.getPercentInstance());
rangeAxis.setUpperMargin(0.10);
plot.getRenderer().setBaseItemLabelsVisible(true);
plot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
return chart;
}

public static JPanel createDemoPanel() {
JFreeChart chart = createChart(createDataset());
return new ChartPanel(chart);
}

public static void main(String[] args) {
BarChart3DDemo4 demo = new BarChart3DDemo4("3D Bar Chart Demo 4");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
double _double = 10.00d;
System.out.println(_double);
}

}
...全文
432 61 打赏 收藏 举报
写回复
用AI写文章
61 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimmyshao 2009-09-07
  • 打赏
  • 举报
回复
不好意思,刚才有人吃饱了没事,拿我帐号乱搞。你的问题的话,用double应该是不行的。自己实现一个类,封装label和value可能比较合适。
jimmyshao 2009-09-07
  • 打赏
  • 举报
回复
算了,就当我什么都没说,你们继续提问回答好了
jimmyshao 2009-09-07
  • 打赏
  • 举报
回复
我写的很无聊的...这是最基本的东西...连这个都懒得看,做什么程序员
o2cola 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 49 楼 jimmyshao 的回复:]
自己根本就没好好查资料么,别人都回答的很清楚了...你的问题根本就不是double能解决的,好好看看double是怎么用的吧...多年没上CSDN,现在的人真是越来越懒了
[/Quote]
你要知道你就说啊,写这样的东西很无聊啊


我对LZ的建议就是,你需要传一个DOUBLE型的参数,1,就传当前的数据类型,由接收参数的方法进行精度的转换,2,传String,把double给format后就是String了,改接收方的程序,让它再进行转换
jimmyshao 2009-09-07
  • 打赏
  • 举报
回复
自己根本就没好好查资料么,别人都回答的很清楚了...你的问题根本就不是double能解决的,好好看看double是怎么用的吧...多年没上CSDN,现在的人真是越来越懒了
zerostar88 2009-09-07
  • 打赏
  • 举报
回复
Java 浮点型就是这样计算的,永远是相近
girl55 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 mengzulin 的回复:]
自己实现一个StandardCategoryItemLabelGenerator类
在plot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 中的StandardCategoryItemLabelGenerator换成成你自己类.你想显示什么都可以.
[/Quote]
不行啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。写个测试不行啊。
girl55 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 mengzulin 的回复:]
自己实现一个StandardCategoryItemLabelGenerator类
在plot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 中的StandardCategoryItemLabelGenerator换成成你自己类.你想显示什么都可以.
[/Quote]
不行啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。写个测试不行啊。
girl55 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 mengzulin 的回复:]
自己实现一个StandardCategoryItemLabelGenerator类
在plot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 中的StandardCategoryItemLabelGenerator换成成你自己类.你想显示什么都可以.
[/Quote]
不行啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。写个测试不行啊。
kisslan 2009-09-07
  • 打赏
  • 举报
回复
又来回复了啊。。。没有答案
kisslan 2009-09-07
  • 打赏
  • 举报
回复
又来回复了啊。。。没有答案
kisslan 2009-09-07
  • 打赏
  • 举报
回复
又来回复了啊。。。没有答案
dz007 2009-09-07
  • 打赏
  • 举报
回复
机器是根据你的0.9和0.7来存的,这是数值型又不是字符型,为什么要把你的00都记进去

你觉得0.9和0.900有区别吗?不都是一个数据,计算机记的是数据不是字符,只要你打印的时候自己控制小数位就可以了

kisslan 2009-09-07
  • 打赏
  • 举报
回复
又来回复了啊。。。等答案
kisslan 2009-09-07
  • 打赏
  • 举报
回复
又来回复了啊。。。等答案
kisslan 2009-09-07
  • 打赏
  • 举报
回复
又来回复了啊。。。没有答案
mengzulin 2009-09-07
  • 打赏
  • 举报
回复
自己实现一个StandardCategoryItemLabelGenerator类
在plot.getRenderer().setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 中的StandardCategoryItemLabelGenerator换成成你自己类.你想显示什么都可以.
24K純帥 2009-09-03
  • 打赏
  • 举报
回复
很奇怪呀
dz007 2009-09-02
  • 打赏
  • 举报
回复
值在传递的时候是不会丢失掉位数的

问题出在打印上,打印出来的位数不对因为没使用格式化打印,但这个值是正确的
gaoch_2000 2009-09-02
  • 打赏
  • 举报
回复
写个类继承double类
public class MyDouble extends Double{
...
public String toString(){
想怎么写就怎么写
}
}
加载更多回复(40)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧