| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:请大侠来帮帮忙 溢出的问题
只看楼主 加入收藏
风影空
Rank: 1
等 级:新手上路
帖 子:73
专家分:2
注 册:2009-7-23
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:4 
请大侠来帮帮忙 溢出的问题
为什么在BigDecimal里面的+,-都不能正常使用哈
应该如何去使用它们呢
比如我想做个p-1  但是p已经定义问BigDecimal 所以p-1会出现错误

以下是代码  麻烦大家帮下忙  谢谢

import java.util.*;
import java.math.*;

public class main{
    public static void main(String args[]){
        
        BigDecimal a,y[];
        
        Scanner reader=new Scanner(System.in);
        System.out.println("Please input g,x,p(Separated By Space):");
        System.out.print("g=");   
        BigDecimal g=new BigDecimal(reader.nextLong());
        System.out.print("x=");
            int x=reader.nextInt();
            System.out.print("p=");
            BigDecimal p=new BigDecimal(reader.nextLong());
           a=g.pow(x);
            y=a.divideAndRemainder(p);
            System.out.println("结果y:"+y[1]);
            
            System.out.print("Please input M:");
            BigDecimal M=new BigDecimal(reader.nextLong());
            BigDecimal m=new BigDecimal(reader.nextLong());
            BigDecimal s=new BigDecimal(reader.nextLong());
        
            m=M.divideAndRemainder(p-1);
        
            s=(y+M).pow(m);
        
            System.out.println("s="+s);
            
    }        
   
}
搜索更多相关主题的帖子: public import 如何 
2010-10-10 00:25
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:10 
1、请不要使用new BigDecimal(long)来创建对象,因为输入的String被转换成long了已经丢失了精度,应该使用new BigDecimal(String)来创建对象
2、BigDecimal的加减乘除等计算操作因为需要考虑精度问题,所以不能简单的进行+ - * /  具体的查阅API吧
BigDecimal的加减乘除必须都是2个BigDecimal对象,貌似除法还要手动考虑如何舍去无法保存的精度
2010-10-10 23:09
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:10 
        BigDecimal num1 = new BigDecimal("8");
        BigDecimal num2 = new BigDecimal("1.2");
              
       num1.add(num2);// 加法
       num1.subtract(num2);// 减法
       num1.multiply(num2);//乘法
       num1.divide(num2, 4, BigDecimal.ROUND_HALF_UP);//除法,4代表小数点后面的位数
     

[ 本帖最后由 lampeter123 于 2010-10-11 09:39 编辑 ]

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-10-11 09:37
风影空
Rank: 1
等 级:新手上路
帖 子:73
专家分:2
注 册:2009-7-23
收藏
得分:0 
回复 2楼 shellingford
应该怎么样定义  类型为BigDecimal的 n  设置范围(1<=n<=100)

如: BigDecimal n;
     while(1<=n<=100)   但< =符号不能直接用  我应该怎样设定呢
2010-10-16 23:33
风影空
Rank: 1
等 级:新手上路
帖 子:73
专家分:2
注 册:2009-7-23
收藏
得分:0 
回复 3楼 lampeter123
应该怎么样定义  类型为BigDecimal的 n  设置范围(1<=n<=100)

如: BigDecimal n;
     while(1<=n<=100)   但< =符号不能直接用  我应该怎样设定呢

2010-10-16 23:33
快速回复:请大侠来帮帮忙 溢出的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019767 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved