java的Math.pow源码看到了这句 if (x != x || y != y),是什么意思呀? 5C

public static double pow(double x, double y)
{
// Special cases first.
if (y == 0)
return 1;
if (y == 1)
return x;
if (y == -1)
return 1 / x;
if (x != x || y != y)
return Double.NaN;
.......
}
请问 if (x != x || y != y)这句是什么意思呀?

0

4个回答

图片说明

使用x != x,用于判断该值是不是NaN。不是上面的朋友说的精度问题,等号操作使用比较两个数据按照位数判等,所以一定是等的,除了NaN(0/0.0)

4

其实就是验证是否等于自身。防止你输入的小数,因为java中超出精度的小数基本是不等于自己的。用此可判断你输入的数是否超出精度范围。
如果if (x != x || y != y)为true,则说明你输入的数在精度范围。反之则超出精度范围,会得到不正确的结果。

2

你可能要理解下java中NaN代表的是什么含义了,Double.NaN的定义是public static final double NaN = 0.0d / 0.0;实际上0.0d/0、0/0.0d、0.0d/0.0d都是NaN,NaN的这个值本身和本身是不相等的,比如你写一个输出语句System.out.println(0.0d / 0 == 0.0d / 0);, 这个就会输出false

0

判断x和y是不是Double.NaN值!

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Math.pow(x,y)使用注意事项
首先明确Math.pow(x,y)的作用就是计算x的y次方,其计算后是浮点数,这里先看一个例子:例1:153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式:按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。public class Main { static int a ,b ,c; pub...
离散数学中的x|y是什么意思?
x|y表示的是x整除y,y被x整除。 举个栗子:                2|4,意思是4被2整除,即2整除4;                1|3,意思是3被1整除,即1整除3;                 5|15,意思是15被5整除,即5整除15。 我们会发现“|”运算符号左边的数一定小于运算符号右边的数。 这个问题一般会在离散数学中看到。 现在好理解了嘛?...
Java基础:X+=Y和X=X+Y的区别
先看一段示例代码: short s=3; s+=1; //编译通过 s=s+1; //编译发生错误在上述代码中,s=s+1出错的原因是右边s+1计算结果为int类型,左边为short类型,违反了自动转换规则,需要强制类型转换。 s+=1编译正确的原因在于“+=”运算符会自动根据接收变量的类型进行类型的强制转换。 例如x+=y语句等价于“x=x+y"和类型强制转换两个操作。
java中x^=y^=x^=y交换整形数据Bug
或许不少做过c语言或者c++的朋友都知道,如果是整形数据x和y,通过x^=y^=x^=y ,就可以交换x和y的值。但是如果想在java中这么做,那就哈哈哈哈~ 让我们直接看一下这么做的后果: 瞧见了没,y是变成1了,但是x却并不等于2,而是等于0。 首先我们来解析一下,如果通过异或来交换两个整数,其正确流程如下: x = x ^ y; y = y ^ x; x = y ^ x; ...
x^=y^=x^=y;
这句话啥意思?rn int x = 2010; rn int y = 2012; rn x^=y^=x^=y;rn System.out.println("x= " + x + "; y= " + y);rn就是x^=y^=x^=y;这句话,谢谢!
02交换两个变量的值
Dim x As Long, y As Long, z As Long x = 11 y = 22 Print "x和y的值" Print "x="; x, "y="; y Print Print "x和y的值互相交换后各自的值" z = x x = y y = z Print "x="; x, "y="; y
Java中x++与++x的区别
面试中常见的一个问题x++跟++x的区别一般回答都是x++是先运算然后自增,而++x则是x自增然后运算。单独使用时他们没有区别。下面我们上代码int x = 5;int y = x++;由于x++参与了运算,所以先将x的值赋给了y,然后再进行自增运算。如果是下面的代码呢?int x = 5;System.out.println(x++);打印结果是多少呢?结果还是5; 不管x++是否参与了运算,我...
c新手请教 x>y?x:y 是什么意思
c新手请教 x>y?x:y 是什么意思
python中items =[[x, y]for (y, x) in pairs]是什么意思
items是列表nitems =[[x, y]for (y, x) in pairs]是什么意思
ssh -X -Y 后 汉化问题 语言问题
远程linux服务器为中文系统,从本地使用ssh远程登录,运行远程linux服务器上的图形应用,此时分为以下几种情况: 本地系统为中文,则不会出现什么问题 本地系统是英文: 1. 使用ssh -X,运行远程图形应用,图形渲染受安全机制控制,不继承远程属性,为英文,因为本地locale使用LANG=en_US.UTF-8,ssh后继承本地的locale,此时如果想使用英文,需要
多选框显示并存储 通过Math.pow(2,i)函数
如图需要做一个多选框显示并存储。一开始采用了  字符串+","去存储和读取。通过split方法遍历出是否选中。后来。采用了把所有的条目循环累加进行读取操作,   Math.pow(2,i) 函数,保证唯一性。并优化了代码。代码如下:/** * 保存文件类型的配置数 * @param booleen */ public void setOption(boolean[] booleen){ ...
最小二乘法拟合圆
for(int i=0;i<n;i++){ int x=samples[i].x; int y=samples[i].y; X1=X1+x; Y1=Y1+y; X2=X2+x*x; Y2 = Y2 +y*y; X3 = X3 + x*x*x; Y3 = Y3 + y*y*y; X1Y1 = X1Y1 + x*y; X1Y2 = X1Y2 + x*y*y; X2Y1 = X2Y1 + x*x*y;
Random 随机获取 x 到 y 之间的值
1要生成1000到100之间的随机数,random.nextInt(1000)+100;注意这里是不包括1000的, 2而通过Math.random()返回一个0到1之间的double值。如果要生成1000到100之间的随机数,则Math.random()*(1000-100)+100;
c语言实现信源熵的计算
根据输入联合概率求出H(X),H(Y),H(X/Y),H(Y/X),H(XY),I(X;Y)。
文都概率论与数理统计
文都的概率论讲义,很不错 1. 各种分布 (1)一般二维随机变量 F (x, y)=P{ X £ x, Y £ y }, xÎ (−¥, +¥), yÎ (−¥, +¥)的性质 F (x, y)为联合分布函数 1) 0 ≤F (x, y)≤1 , "xÎ (−¥, +¥),, yÎ (−¥, +¥); 2) F(−¥, y )= F(x, −¥)=0, F(+¥,+¥)=1; 3) F (x, y)关于x, y 均为单调不减函数; 4) F (x, y)关于x, y 均分别右连续.
商人过河源程序 java源代码
public class Search { public static void main(String[] args) { int x = 3, y = 3; int k = 1; while (x != 0 || y != 0) { int i = (int) (Math.random() * 3); int j = (int) (Math.random() * (3 - i)); if (i != 0 || j != 0) { if (k % 2 != 0) { x = x - i; y = y - j; if (!((x == 0 && y >= 0 && y <= 3) || (x == 3 && y >= 0 && y <= 3) || (x == 1 && y == 1) || (x == 2 && y == 2))) { x = x + i; y = y + j; } else { System.out.println("(" + x + "," + y + ")"); k++; continue; } ; } int m = (int) (Math.random() * (4 - x)); int n = (int) (Math.random() * (4 - y)); if (m != 0 || n != 0) { if ((k % 2 == 0) && ((m + n) <= 2)) { x = x + m; y = y + n; if (!((x == 0 && y >= 0 && y <= 3) || (x == 3 && y >= 0 && y <= 3) || (x == 1 && y == 1) || (x == 2 && y == 2))) { x = x - m; y = y - n; } else { System.out.println("(" + x + "," + y + ")"); k++; } ; } } } } } }
cin的个人理解
标准输入设备cin是指从键盘输入数据 , 而我们知道从键盘输入的时候是使用了缓冲的(windows中是行缓冲) ,系统将输入数据放到程序的缓存内存中是以Enter键为标志的。 也就是说 我们输入了一行数据(可以只一个字符或者N个字符时)时,这些数据先是被系统检测到后存放在系统的
python中的reduce介绍:
1. 概念说明 python中的reducepython中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。 如: def myadd(x,y):
随机过程及应用(二) - E[X|Y] = E[Y E[X|Y]]证明
E[X|Y] = E[Y E[X|Y]]证明: || **1.Just use the following: For an integrable random variable ZZ, 对于一个可积随机变量ZZ,E[Z]=E[ E[Z|F] ]E[Z] =E[\ E[Z|F]\ ] for any σ−algebra Fσ-algebra \ F . If YY is F−measu
java实现SM2算法压缩公钥X计算出Y
国密SM2公钥解压 JAVA .jar 命令行:java -jar qrcode-sm2.jar+压缩公钥x
处女作品,人脸检查之脸部roi检查
环境:python2.7 运行后按q截取图片并保存两眼ROI区域,按w结束import numpy as np import cv2 as cv import matplotlib.pyplot as plot face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv.Ca...
给定一个整数集合X={x[1],x[2],……,x[n]}和整数y,找出和等于y的X的子集Y
给定一个整数集合X={x[1],x[2],……,x[n]}和整数y,找出和等于y的X的子集Y
Pytorch学习(一)--线性回归
最近开始学习pytorch了,计划一周之内看个大概。Pytorch学习系列(一)至(四)均摘自《深度学习框架PyTorch入门与实践》陈云这里把自己觉得比较重要并且具有代表性的代码贴出来,做一下记录。#----------------------------------------------------------------------------- #--------------------...
逻辑判断 !(x^y) 等价于 x==y
逻辑判断   !(x^y)   等价于 x==yx只有在等于y的时候,x^y=0否则=1;
Python学习(机器学习_线性回归)
本人机械类专业,最近接触python学习,觉得挺有意思。后来在网上看到推荐的机器学习(斯坦福公开课),刚学完线性回归,然后就尝试在python(2.7)上面实现一遍,巩固所学知识的同时也加深对于机器学习的算法的理解。代码基本照搬octave中的作业题答案,在此也很感谢黄海广博士的学习资料,内容真的很详细。 http://mooc.guokr.com/course/16/Machine-Learni
Java 变量x++ 和 ++x的区别
若为x++, 那么先执行x在本语句中的任务,执行完毕后+1。 若为++x,则先+1然后再执行x在本语句中的任务。 Example 1: (++x) int x = 7; System.out.println(++x); System.out.println(x); 输出为: 8 8 Example 2: (x++) int x = 7; System.out.println(x+
reduce函数
reduce:其语法格式: reduce ( func , seq [ , init ] )参数说明:reduce函数即为化简,它是这样一个过程:每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的func函数。在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用。简单来说,可以用这样一个形象化
c++与昂代码下载。哼游泳
#include<iostream.h> void main() {int x,y,t; cout<<"输入x与y的值" cin>>x>>y; t=x; x=y; y=t; cout<<"输出结果"<<x<<','<<y;} 算法就是设个中间变量“t”。
标准EP算法
f(x, y) = x * x + y * y 在区间(-1000, 1000)的最小值
请教关于宏 #swap(x,y) (x)^=(y)^=(x)^=y
各位大虾小弟请教c中下面低宏定义是如何实现两数交换的及"^"的应用!rn#swap(x,y) (x)^=(y)^=(x)^=yrnrn另请教c++的rna=1<<32;rncout<<"1<<32=:"<
鼠标连点器
[0] x=709 y=499 [1] x=709 y=499 [2] x=708 y=499 [3] kp=k9 x=708 y=499 [4] x=708 y=499 [5] x=708 y=499 [6] kp=k49 x=708 y=499 [7] x=708 y=499 [8] x=708 y=499
宏定义中(void) (&_x == &_y);是怎么做到判断类型的?
#define min(x, y) (( \ const typeof(x) _x = (x); \ const typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x (void) (&_x == &_y)这句话本身都执行程序来讲完全是一句废话,它的作用在于,本身我们无法做这样的操作typeof(_x)==typeof(_y
请教宏 #swap(x,y) (x)^=(y)^=(x)^=y
各位大虾小弟请教c中下面低宏定义是如何实现两数交换的及"^"的应用!rn#swap(x,y) (x)^=(y)^=(x)^=yrnrn另请教c++的rna=1<<32;rncout<<"1<<32=:"<
Javascript—获取元素ele的位置(x,y)
function getPosition(e){ var x,y=0; while(e!=null){   x += e.offsetLeft;   y +=e.offsetTop;   e=e.offsetParent; } return {x:x,y:y}; }
java鼠标坐标
鼠标坐标,public void mouseMoved(MouseEvent e){ int x,y; x=e.getX();y=e.getY(); setTitle("鼠标坐标x:"+x+"y:"+y); }
JAVA实现输出九九乘法表
利用JAVA编写代码输出九九乘法表 public class jiujiu { public static void main(String[]args) { int x,y,i; for(x=1;x<=9;x++) { for(y=1;y<=x;y++) System.out.print(+x+"+"+y+"="+x*y); System.out.println(); } } }
操作系统实验二、线程和管道通信实验
设有二元函数 f(x,y) = f(x) + f(y) 其中: f(x) = f(x-1) * x (x >1) f(x)=1 (x=1) f(y) = f(y-1) + f(y-2) (y> 2) f(y)=1 (y=1,2) 请编程建立 3 个并发协作进程或线程,它们分别完成 f(x,y)、f(x)、f(y)
上海理光笔试题目及答案
上海理光分公司笔试题目及答案 #include int max1(int x,int y) { int z; z=x>y?x:y; return z; } max2(int x,int y,int *z) { *z=x>y?x:y; }
并发协作进程完成函数
设有二元函数f(x,y) = f(x) + f(y) 其中: f(x) = f(x-1) * x (x >1) f(x)=1 (x=1) f(y) = f(y-1) + f(y-2) (y> 2) f(y)=1 (y=1,2) 请编程建立3个并发协作进程,它们分别完成f(x,y)、f(x)、f(y)
向程序输入数据12345M678并回车后,x的值为123,y的值为45.000000
int x; float y;scanf(“%3d%f”,&amp;amp;x,&amp;amp;y); 向程序输入数据:12345M678并回车后,x的值为123,y的值为45.000000   总结如下: (1)scanf中的%3d的数字3表示读入3位。这里是读入了123 (2)在向整型、浮点型读取数据时,遇到非数字即结束读取。这里是从4开始读到5结束,读入了45,float类型显示为45.0000...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 cocos2d x 手游开发教程 cocos2d x手游开发教程