java 亂數小數點取捨法

int p=0;

p=(int) (Math.random()*100)+1;

這是產生1-100亂數

問題1.

假設我想產生一個亂數質5.0000到13.9999之間可以嗎? ((小數4位))

請報告我寫入程式和方式.我找不到能只取到小數4位的方法(指令)..

問題2.要是我產生了5個亂數

5.0000到13.9999之間的亂數

並需要求總合並取到小數2位...

問題3.我如何產生小數2位數的亂數..只求到小數兩位

如1.99或21.56 <==小數兩位

謝謝...

已更新項目:

請問~我想設定為列印方示像這樣的

值 數1:

值 數2:

值 數3:

值 數4:

值 數5:

平均值:

最高質:

最低質:

亂數是出現在值數後方是個別分開的..且取到小數4位後..並相加總合

但是我執行後回出現會出現擠在再同一行上不會分行

就算改成System.out.println(" 質數1 = "+"%.4f",z);還是擠在同一行..

2 個已更新項目:

請問如何取在分別列印後能在算總和嗎?

並取最高和最低點並出現像這樣的列印?

質數1=5.1234

質數2 =6.1234

質數3 =7.1234

質數4 = 6.1234

質數5= 8.1234

最高質:8.1234

最低質:5.1234

平均質:6.12<==小數2位

2 個解答

評分
  • 9 年前
    最佳解答

    下方程式範例請參考(請注意這是隨機亂數雖訂13.9999~~5.0000範圍但每一次執行數字都會不同

    public class YRandom101 {

    public static void main(String[] args){

    double x = 13.99999-5.0000; //先設13.9999到5.0000間的數值是多少

    double z =(Math.random()*x+5); //再用Math.random()去乘以所設的範圍再+5才不會出現負數

    //不可用(Math.random()*13.9999-5.0000)這樣會有負數產生

    System.out.printf("%.4f",z); //第一題產生一個5.0000~~13.9999的小數點後4位的數值

    double[] ary = new double[5];

    double sum=0, y=0;

    System.out.println();

    System.out.print("產生5個5.0000~~13.9999的亂數");

    y=13.99999-5.0000;

    for (int i = 0; i < ary.length; i++) {

    ary[i]=(Math.random()*y + 5);

    sum+=ary[i];

    System.out.printf("\n%.2f" , ary[i]);

    }

    System.out.printf("\n5個亂數總合為 :%.2f" , sum); //第二題產生五個5個5.0000~~13.9999的亂數及總合取到小數點後2位數值

    System.out.println("\n產生亂數只顯示小數點後2位數");

    double j =Math.random();

    System.out.printf("%.2f\n" , j); //第三題隨機亂數取道小數點後2位,使用printf 及設定%.2f 百分比句點後數字就是要顯示小數點後幾個數值設定

    //printf後括號中的\n是使數字換行,使用printf 括弧中分隔要用逗點不同於print括弧中用的是 + 號

    }

    }

    2011-12-11 20:30:25 補充:

    範例程式中的printf 後的括弧中\\n就是換行ㄌㄚ

    你原來提問中沒有要平均值及最大最小值~~下方網址給你新的程式碼都有滿足你的要求啦

    http://homepage8.seed.net.tw/web@3/fanlucy1500/fil...

    參考資料: 加菲貓
  • 9 年前

    public static void main(String[] args){ BigDecimal[]bd_array = new BigDecimal[5];//初始陣列 for(int i=0;i<5;i++){//取得亂數值 bd_array[i]= new BigDecimal(Math.random()*14).setScale(4,BigDecimal.ROUND_HALF_UP);//取得亂數並將小數點設置4位 if(bd_array[i].compareTo(new BigDecimal(5))==-1){//如亂數值小於五此亂數值重新取得 i--; } } int index = 0; for(BigDecimal bd:bd_array){//印出五個數值 System.out.println("值 數"+(++index)+":"+bd); } //變數初始化 BigDecimalmax = BigDecimal.ZERO; BigDecimal min = new BigDecimal(14); BigDecimaladg = BigDecimal.ZERO; //變數初始化 for(int i=0;i<bd_array.length;i++){ max= max.max(bd_array[i]);//取得最大值 min= min.min(bd_array[i]);//取得最小值 adg = adg.add(bd_array[i]);//取得平均值 } //印出計算後的最大、最小、平均值 System.out.println("最大值:"+max); System.out.println("最小值:"+min); //下面這行是將所有數相加後設定小數點兩位後的值四捨五入 System.out.println("平均值:"+adg.divide(new BigDecimal(bd_array.length)).setScale(2, BigDecimal.ROUND_HALF_UP)); }

還有問題?馬上發問,尋求解答。