「java计时精度」java 计算耗时

博主:adminadmin 2023-01-24 19:51:11 377

本篇文章给大家谈谈java计时精度,以及java 计算耗时对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA计算时实现数字计算结果高精度

这个程序满足你的要求吧

public class BigNumber {

public static int[] add(int[] a, int[] b) {

int carry = 0;

int[] c = new int[a.length];

for(int i = a.length - 1; i = 0; i--) {

c[i] = a[i] + b[i] + carry;

if(c[i] 10000)

carry = 0;

else { // 进位

c[i] = c[i] - 10000;

carry = 1;

}

}

return c;

}

public static int[] sub(int[] a, int[] b) {

int borrow = 0;

int[] c = new int[a.length];

for(int i = a.length - 1; i = 0; i--) {

c[i] = a[i] - b[i] - borrow;

if(c[i] = 0)

borrow = 0;

else { // 借位

c[i] = c[i] + 10000;

borrow = 1;

}

}

return c;

}

public static int[] mul(int[] a, int b) { // b 为乘数

int carry = 0;

int[] c = new int[a.length];

for(int i = a.length - 1; i =0; i--) {

int tmp = a[i] * b + carry;

c[i] = tmp % 10000;

carry = tmp / 10000;

}

return c;

}

public static int[] div(int[] a, int b) { // b 为除数

int remain = 0;

int[] c = new int[a.length];

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

int tmp = a[i] + remain;

c[i] = tmp / b;

remain = (tmp % b) * 10000;

}

return c;

}

public static void main(String[] args) {

int[] a = {1234, 5678, 9910, 1923, 1124};

int[] b = {1234, 5678, 9910, 1923, 1124};

int[] c = BigNumber.add(a, b);

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

System.out.print(c[i]);

}

System.out.println();

}

}

怎么控制精度在java

JAVA中如何对double或者float的浮点数进行精度计算,在JAVA中提供了多种参数来实现精度的不同控制方式。具体例子如下: 

转自

Java代码 

/* 

 * Created on 2005-6-5 

 * Author stephen 

 * Email zhoujianqiang AT gmail DOT com 

 * CopyRight(C)2005-2008 , All rights reserved. 

 */  

package com.soft4j.utility;  

  

import java.math.BigDecimal;  

  

/** 

 * 与小数位精度(四舍五入等)相关的一些常用工具方法. 

 *  

 * float/double的精度取值方式分为以下几种: br 

 * java.math.BigDecimal.ROUND_UP br 

 * java.math.BigDecimal.ROUND_DOWN br 

 * java.math.BigDecimal.ROUND_CEILING br 

 * java.math.BigDecimal.ROUND_FLOOR br 

 * java.math.BigDecimal.ROUND_HALF_UPbr 

 * java.math.BigDecimal.ROUND_HALF_DOWN br 

 * java.math.BigDecimal.ROUND_HALF_EVEN br 

 *  

 * @author stephen 

 * @version 1.0.0 

 */  

public final class RoundTool {  

  

    /** 

     * 对double数据进行取精度. 

     * p 

     * For example: br 

     * double value = 100.345678; br 

     * double ret = round(value,4,BigDecimal.ROUND_HALF_UP); br 

     * ret为100.3457 br 

     *  

     * @param value 

     *            double数据. 

     * @param scale 

     *            精度位数(保留的小数位数). 

     * @param roundingMode 

     *            精度取值方式. 

     * @return 精度计算后的数据. 

     */  

    public static double round(double value, int scale, int roundingMode) {  

        BigDecimal bd = new BigDecimal(value);  

        bd = bd.setScale(scale, roundingMode);  

        double d = bd.doubleValue();  

        bd = null;  

        return d;  

    }  

  

    /** 

     * 测试用的main方法. 

     *  

     * @param argc 

     *            运行参数. 

     */  

    public static void main(String[] argc) {  

        //下面都以保留2位小数为例  

          

        //ROUND_UP  

        //只要第2位后面存在大于0的小数,则第2位就+1  

        System.out.println(round(12.3401,2,BigDecimal.ROUND_UP));//12.35  

        System.out.println(round(-12.3401,2,BigDecimal.ROUND_UP));//-12.35  

        //ROUND_DOWN  

        //与ROUND_UP相反  

        //直接舍弃第2位后面的所有小数  

        System.out.println(round(12.349,2,BigDecimal.ROUND_DOWN));//12.34  

        System.out.println(round(-12.349,2,BigDecimal.ROUND_DOWN));//-12.34  

        //ROUND_CEILING  

        //如果数字0 则和ROUND_UP作用一样  

        //如果数字0 则和ROUND_DOWN作用一样  

        System.out.println(round(12.3401,2,BigDecimal.ROUND_CEILING));//12.35  

        System.out.println(round(-12.349,2,BigDecimal.ROUND_CEILING));//-12.34  

        //ROUND_FLOOR  

        //如果数字0 则和ROUND_DOWN作用一样  

        //如果数字0 则和ROUND_UP作用一样  

        System.out.println(round(12.349,2,BigDecimal.ROUND_FLOOR));//12.34  

        System.out.println(round(-12.3401,2,BigDecimal.ROUND_FLOOR));//-12.35  

        //ROUND_HALF_UP [这种方法最常用]  

        //如果第3位数字=5,则第2位数字+1  

        //备注:只看第3位数字的值,不会考虑第3位之后的小数的  

        System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_UP));//12.35  

        System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_UP));//12.34  

        System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_UP));//-12.35  

        System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_UP));//-12.34  

        //ROUND_HALF_DOWN  

        //如果第3位数字=5,则做ROUND_UP  

        //如果第3位数字5,则做ROUND_DOWN  

        System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_DOWN));//12.35  

        System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_DOWN));//12.34  

        System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_DOWN));//-12.35  

        System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_DOWN));//-12.34  

        //ROUND_HALF_EVEN  

        //如果第3位是偶数,则做ROUND_HALF_DOWN  

        //如果第3位是奇数,则做ROUND_HALF_UP  

        System.out.println(round(12.346,2,BigDecimal.ROUND_HALF_EVEN));//12.35  

        System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_EVEN));//12.35  

    }  

}

 如果要求精确控制位数,推荐使用BigDecimal,这是在JDK1.4版本之后推荐的一个处理精度的类。

java 毫秒倒计时器 想编写一个方法,其中就有一个参数 倒计时多长时间

import java.awt.BorderLayout;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.SwingConstants;

public class NanoTimeframe extends JPanel

{

private static final long serialVersionUID = -6135068834705503622L;

private JLabel lblTime;

private long start = 0L; // 从0毫秒开始

private static long MAXTIME = 5000L; // 5秒后结束

private boolean begin = false;

private JTextField setTime;

public NanoTimeframe()

{

this.lblTime = new JLabel("单击开始");

this.setTime = new JTextField();

System.out.println("1");

this.lblTime.setFont(new Font("Monospaced", Font.BOLD, 60));

this.lblTime.setHorizontalAlignment(SwingConstants.CENTER);

this.lblTime.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e)

{

MAXTIME = Long.parseLong(setTime.getText());

begin = true;

lblTime.setText(timeStr(start));

}

});

setLayout(new BorderLayout());

add(lblTime, BorderLayout.CENTER);

add(setTime, BorderLayout.NORTH);

}

private String timeStr(long time)

{

StringBuffer timeBuffer = new StringBuffer();

long miu = time / (60 * 1000);

time -= miu * 60 * 1000;

long se = time / 1000;

time -= se * 1000;

long mi = time % 1000;

timeBuffer.append(miu 10 ? ("0" + miu) : miu);

timeBuffer.append(".");

timeBuffer.append(se 10 ? ("0" + se) : se);

timeBuffer.append(".");

timeBuffer.append(mi 10 ? ("00" + mi) : (mi 100 ? ("0" + mi) : mi));

return timeBuffer.toString();

}

@Override

public void paintComponent(Graphics page)

{

if (!begin) return;

super.paintComponent(page);

if (start = MAXTIME)

{

lblTime.setText("Bomb!!!");

return;

}

start += 1;

lblTime.setText(timeStr(start));

}

public static void main(String [] args){

JFrame jf = new JFrame();

jf.setResizable(false);

jf.setBounds(0, 0, 460, 330);

jf.setLocationRelativeTo(null);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.add(new NanoTimeframe());

jf.setVisible(true);

}

}

请给分 改得辛苦上面输入毫秒后计时

如何用java做一个纳秒级别的正计时器

System.currentTimeMillis() ,当前时间-开始时间 = 结果,不过你是需要做成窗体的,还是就是一个程序里面的方法? 无论你使用那种,System.currentTimeMillis() 这方法都适用!

JAVA计时算法

你可以在开始和结束的时候,分别记录下当前的时间的这毫秒数。然后再减,以下是一段代码。

public

class

Test{

public

static

void

main(String[]

args)

{

long

startMili=System.currentTimeMillis();//

当前时间对应的毫秒数

System.out.println("开始

"+startMili);

//

执行一段代码,求一百万次随机值

for(int

i=0;i1000000;i++){

Math.random();

}

long

endMili=System.currentTimeMillis();

System.out.println("结束

s"+endMili);

System.out.println("总耗时为:"+(endMili-startMili)+"毫秒");

}

}

关于java计时精度和java 计算耗时的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。