
java中通常进行数学运算的东西都在Math类中,求函数的幂次方就是Math类中的pow方法:public static double pow(double a, double b), 返回第一个参数的第二个参数次幂的值。
例如求2的3次方,代码如下:
public class test {
public static void main(String[] args) {
double a= Mathpow(2, 3);
}
}
运行结果为8
扩展资料:
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
与 StrictMath 类的某些数学方法不同,并非 Math 类所有等价函数的实现都定义为返回逐位相同的结果。此类在不需要严格重复的地方可以得到更好的执行。
默认情况下,很多 Math 方法仅调用 StrictMath 中的等价方法来完成它们的实现。建议代码生成器使用特定于平台的本机库或者微处理器指令(可用时)来提供 Math 方法更高性能的实现。这种更高性能的实现仍然必须遵守 Math 的规范。
实现规范的质量涉及到两种属性,即返回结果的准确性和方法的单调性。浮点 Math 方法的准确性根据 ulp(units in the last place,最后一位的进退位)来衡量。对于给定的浮点格式,特定实数值的 ulp 是包括该数值的两个浮点值的差。
当作为一个整体而不是针对具体参数讨论方法的准确性时,引入的 ulp 数用于任何参数最差情况下的误差。
如果一个方法的误差总是小于 05 ulp,那么该方法始终返回最接近准确结果的浮点数;这种方法就是正确舍入。一个正确舍入的方法通常能得到最佳的浮点近似值;然而,对于许多浮点方法,进行正确舍入有些不切实际。
相反,对于Math 类,某些方法允许误差在 1 或 2 ulp 的范围内。非正式地,对于 1 ulp的误差范围,当准确结果是可表示的数值时,应该按照计算结果返回准确结果;否则,返回包括准确结果的两个浮点值中的一个。对于值很大的准确结果,括号的一端可以是无穷大。
除了个别参数的准确性之外,维护不同参数的方法之间的正确关系也很重要。
因此,大多数误差大于 05 ulp 的方法都要求是半单调的:只要数学函数是非递减的,浮点近似值就是非递减的;同样,只要数学函数是非递增的,浮点近似值就是非递增的。并非所有准确性为 1 ulp 的近似值都能自动满足单调性要求。
参考资料:
https://docsoraclecom/javase
以下是一个Java程序,可以输入一个四位整数并判断它是否是完全平方数:
import javautilScanner;
public class PerfectSquare {
public static void main(String[] args) {
Scanner input = new Scanner(Systemin);
Systemoutprint("请输入一个四位整数:");
int num = inputnextInt();
int sqrt = (int) Mathsqrt(num);
if (sqrt sqrt == num) {
Systemoutprintln(num + "是一个完全平方数。");
} else {
Systemoutprintln(num + "不是一个完全平方数。");
}
}
}
该程序首先使用Scanner类从用户输入中获取一个四位整数,然后使用Mathsqrt()方法计算该数的平方根并转换为int类型。如果平方根的平方等于原始数,则说明原始数是完全平方数,否则不是。程序最后输出相应的结果。
new Random()就是一个随即数对象,然后nextInt为获取当前随机数对象的随即产生的一个整数,%100就是用这个整数对100求模,获得其余(该余在-99 至 99之间),Mathabs为取绝对值,再加1,则获得[1, 100]之间的整数,包括1,100
pow函数。
函数原型:double pow (double x,double y);
头文件:mathh,功能:返回x的y次方。
c++是c语言的继承。它可用于C语言过程编程、以抽象数据类型为特征的基于对象的编程以及以继承和多态为特征的面向对象编程。
C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。
扩展资料:
C++的异常处理机制可以很好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。
C++不像VB和易语言等,把很多东西都封装起来了,对开发者不可见,所以无法理解其深层的原理,C++里很多东西都要程序员自己实现,这也增加了开发难度。
C++程序的依赖性小,不像VB需要很多控件库,java需要java虚拟机,C#、VBNET需要net框架支持。对C++代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。
-C++
java设计计算器,主要是使用java swing,对每个按钮进行监听,实现相关功能,如下代码:
package comqiulinhe;
import javaawtBorderLayout;
import javaawtColor;
import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingImageIcon;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJPanel;
import javaxswingJTextField;
import javaxswingSwingConstants;
public class Jisuanqi extends JFrame implements ActionListener {
/
/
private static final long serialVersionUID = 1L;
Result result = new Result(); // 定义text的面板
Number_Key number_key = new Number_Key(); // 定义按钮面板
// 当点击按钮+、-、、/时,com = true
boolean com = false;
// 当i=0时说明是我们第一次输入,字符串text不会累加
int i = 0;
// 存放text的内容
String text = "";
// 存放点击按钮+、-、、/之前的数值
double defbutton = 0;
// +、-、、/的代号分别为1,2,3,4
int symbol = 0;
// 构造函数
Jisuanqi() {
super("WangJiao"); // 设定标题
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE); // 设定关闭窗体时退出程序
JPanel pane = new JPanel(); // 定义主面板
panesetLayout(new BorderLayout());
setBounds(380, 220, 30, 80); // 前两个参数是在屏幕上显示的坐标,后两个是大小
// 替换图标
ImageIcon icon = new ImageIcon("F:1GIF");
// JisuanqiclassgetResource("APPLEGIF")
// );
setIconImage(icongetImage());
paneadd(result, BorderLayoutNORTH);
paneadd(number_key, BorderLayoutCENTER);
paneadd(number_keyequal, BorderLayoutSOUTH);
number_keyoneaddActionListener(this); // 对1按钮添加监听事件
number_keytwoaddActionListener(this); // 对2按钮添加监听事件
number_keythreeaddActionListener(this); // 对3按钮添加监听事件
number_keyfouraddActionListener(this); // 对4按钮添加监听事件
number_keyfiveaddActionListener(this); // 对5按钮添加监听事件
number_keysixaddActionListener(this); // 对6按钮添加监听事件
number_keysevenaddActionListener(this); // 对7按钮添加监听事件
number_keyeightaddActionListener(this); // 对8按钮添加监听事件
number_keynineaddActionListener(this); // 对9按钮添加监听事件
number_keyzeroaddActionListener(this); // 对0按钮添加监听事件
number_keyceaddActionListener(this); // 对置零按钮添加监听事件
number_keyplusaddActionListener(this); // 对+按钮添加监听事件
number_keyequaladdActionListener(this); // 对=按钮添加监听事件
number_keysubaddActionListener(this); // 对-按钮添加监听事件
number_keymuladdActionListener(this); // 对按钮添加监听事件
number_keydivaddActionListener(this); // 对/按钮添加监听事件
number_keypointaddActionListener(this); // 对按钮添加监听事件
setContentPane(pane);
pack(); // 初始化窗体大小为正好盛放所有按钮
}
// 各个按钮触发的事件
public void actionPerformed(ActionEvent e) {
/
如果是点击数字按钮那么先要判断是否在此之前点击了+、-、、/、=,如果是那么com=true 如果没有com=
false;或者是否点击数字键,如果是i = 1,如果没有 i = 0;
/
if (egetSource() == number_keyone) {
if (com || i == 0) {
resulttextsetText("1");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "1");
}
} else if (egetSource() == number_keytwo) {
if (com || i == 0) {
resulttextsetText("2");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "2");
}
} else if (egetSource() == number_keythree) {
if (com || i == 0) {
resulttextsetText("3");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "3");
}
} else if (egetSource() == number_keyfour) {
if (com || i == 0) {
resulttextsetText("4");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "4");
}
} else if (egetSource() == number_keyfive) {
if (com || i == 0) {
resulttextsetText("5");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "5");
}
} else if (egetSource() == number_keysix) {
if (com || i == 0) {
resulttextsetText("6");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "6");
}
} else if (egetSource() == number_keyseven) {
if (com || i == 0) {
resulttextsetText("7");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "7");
}
} else if (egetSource() == number_keyeight) {
if (com || i == 0) {
resulttextsetText("8");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "8");
}
} else if (egetSource() == number_keynine) {
if (com || i == 0) {
resulttextsetText("9");
com = false;
i = 1;
} else {
text = resulttextgetText();
resulttextsetText(text + "9");
}
}
/
对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是
如果text中的数值=0就要判断在这个数值中是否有存在如果有那么就在原来数值基础之上添 加0;否则保持原来的数值不变
/
else if (egetSource() == number_keyzero) { // resulttextgetText()是得到text里内容的意思
if (com || i == 0) {
resulttextsetText("0");
com = false;
i = 1;
} else {
text = resulttextgetText();
if (FloatparseFloat(text) > 0 || FloatparseFloat(text) < 0) { // FloatparseFloat(text)就是类型转换了,下面都是一样
resulttextsetText(text + "0");
} else {
if (texttrim()indexOf("") == -1) {
resulttextsetText(text);
} else {
resulttextsetText(text + "0");
}
}
}
} else if (egetSource() == number_keyce) {
resulttextsetText("0");
i = 0;
com = true;
// text = "";
defbutton = 0;
}
/
本程序不会让一个数值中出现2个以上的小数点具体做法是:判断是否已经存在存在就不添加, 不存在就添加
/
else if (egetSource() == number_keypoint) {
if (com || i == 0) {
resulttextsetText("0");
com = false;
i = 1;
} else {
text = resulttextgetText();
if (texttrim()indexOf("") == -1) {
resulttextsetText(text + "");
} else {
resulttextsetText(text);
}
}
} // 获得点击+之前的数值
else if (egetSource() == number_keyplus) {
com = true;
i = 0;
defbutton = DoubleparseDouble(resulttextgetText());
symbol = 1;
} // 获得点击-之前的数值
else if (egetSource() == number_keysub) {
com = true;
i = 0;
defbutton = DoubleparseDouble(resulttextgetText());
symbol = 2;
} // 获得点击之前的数值
else if (egetSource() == number_keymul) {
com = true;
i = 0;
defbutton = DoubleparseDouble(resulttextgetText());
Systemoutprintln(defbutton);
symbol = 3;
} // 获得点击/之前的数值
else if (egetSource() == number_keydiv) {
com = true;
i = 0;
defbutton = DoubleparseDouble(resulttextgetText());
symbol = 4;
} else if (egetSource() == number_keyequal) {
switch (symbol) {
/
@param num
底数
@param n
指数
@return num的n次幂
/
static double power(double num, int n) {
if (n < 0) {
return 1d / num power(num, -n - 1);
}
if (n == 0) {
return 1;
}
if (n == 1) {
return num;
}
return num power(num, n - 1);
}
肯定不是啦!
x^1/2先是对1/2 然后0与x做异或运算结果为x
Mathsqrt(x),x是double类型的 求 平方根
MathPow(a,b) a ,b是double类型的求a的b次方
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)