• 主页
  • Java SE
  • J2ME
  • Web开发
  • Java EE
  • Eclipse

java 截取计算

土豆你个番茄 上海大学 高级软件工程师  2010-07-19 11:28:35
public static void main(String[] args) {
double a;
double b;
b = 0.01;
for( int i=0; i<1000; i++ ){
a = 10 + i * 0.001;
System.out.printf("%f %% %f = %g\n", a, b, mod(a,b));
}
}
/**
* num/divの余剰を返す。
*
* @param num 有効範囲 XXX < YYY
* @param div 有効範囲 XXX < YYY
* @return
*/
public static double mod(double num, double div) {
// …省略…
}
System.out.println( 10.0 % 0.1 ); // 输出的结果 => 0.09999999999999995
但是我只要小数点后面三位
请帮助我吧省略的部分补充完整 谢谢
...全文
146 点赞 收藏 14
写回复
14 条回复
土豆你个番茄 2010年07月20日

public static void main(String[] args) {
double a;
double b;
b = 0.01;
for (int i = 0; i < 1000; i++) {
a = 10 + i * 0.001;
System.out.printf("%f %% %f = %g\n", a, b, mod(a, b));
}
}
public static double mod(double num, double div) {
double reuslt = num % div;
DecimalFormat df = new DecimalFormat("0.000");
return Double.parseDouble(df.format(reuslt));
}

我目前是这样写的 不过因为mod方法的返回值是double型的 所以很难搞 前面控制了格式 可是后面又被返回成了double型
回复 点赞
土豆你个番茄 2010年07月20日
12楼的不是废话吗 如果那么简单 我还问啊
回复 点赞
染指黄昏 2010年07月20日
System.out.printf(" %.3f " ,10.0 % 0.1 );
回复 点赞
dr_lou 2010年07月19日
如果你的mod方法必须返回double,请 Double.parseDouble
回复 点赞
closewbq 2010年07月19日
BigDecimal通过设置精度和四舍五入就OK了么
回复 点赞
dr_lou 2010年07月19日
package com.xuz.csdn.june18;

import java.text.DecimalFormat;

public class NumberFormat {

public static void main(String[] args) {
System.out.println(mod(10.0, 0.1));
}

public static String mod(double num, double div) {
DecimalFormat df = new DecimalFormat("######0.000");
return df.format(num % div);
}
}
回复 点赞
土豆你个番茄 2010年07月19日
应该要四舍五入的
回复 点赞
土豆你个番茄 2010年07月19日
8楼的输出结果是
10.000000 % 0.010000 = 0.0100000
10.001000 % 0.010000 = 0.00100000
10.002000 % 0.010000 = 0.00200000
10.003000 % 0.010000 = 0.00300000
10.004000 % 0.010000 = 0.00400000
10.005000 % 0.010000 = 0.00500000
10.006000 % 0.010000 = 0.00600000
........
........
但是我只要小数点后3位
回复 点赞
土豆你个番茄 2010年07月19日
public static void main(String[] args) {
double a;
double b;
b = 0.01;
for( int i=0; i<1000; i++ ){
a = 10 + i * 0.001;
System.out.printf("%f %% %f = %g\n", a, b, mod(a,b));
}
}
/**
* num/divの余剰を返す。
*
* @param num 有効範囲 XXX < YYY
* @param div 有効範囲 XXX < YYY
* @return
*/
public static double mod(double num, double div) {
// …省略…
}





所有的操作 都需要在省略号的部分编写
回复 点赞
土豆你个番茄 2010年07月19日
我那个返回值是double的
回复 点赞
closewbq 2010年07月19日

public static void main(String[] args){
System.out.println(round(10.0,0.1,3));
}
/**
* @param num 除数
* @param div 被除数
* @param scale 小数点后保留几位
* @return 四舍五入的结果
*/
public static String round(double num, double div,int scale){
double reuslt=num%div;
System.out.println(reuslt);
BigDecimal bd=new BigDecimal(Double.toString(reuslt));
BigDecimal one=new BigDecimal("1");
return bd.divide(one,scale,BigDecimal.ROUND_HALF_UP).toString();
}
回复 点赞
土豆你个番茄 2010年07月19日
哦看到了double型
回复 点赞
土豆你个番茄 2010年07月19日
2楼的好像没有截取吗 而且我的返回值是double型的
回复 点赞
土豆你个番茄 2010年07月19日
请4楼的给个具体的程序啊 谢了 给分
回复 点赞
发动态
发帖子
Java
创建于2007-09-28

1.8w+

社区成员

8.1w+

社区内容

Java相关技术讨论
社区公告
暂无公告