「java计时精度」java 计算耗时
本篇文章给大家谈谈java计时精度,以及java 计算耗时对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA计算时实现数字计算结果高精度
- 2、怎么控制精度在java
- 3、java 毫秒倒计时器 想编写一个方法,其中就有一个参数 倒计时多长时间
- 4、如何用java做一个纳秒级别的正计时器
- 5、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 计算耗时的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。