将数值添加到-Infinity?

时间:2015-05-05 11:56:30

标签: javascript

importdata

小提琴:http://jsfiddle.net/j40ucf6m/1/

与我最近提出的问题相关:P ..我刚发现npc_objects = {}; TURKEYLENGTH = (Math.max.apply(Math, Object.keys(npc_objects))) + 1; console.log(TURKEYLENGTH); 实际上是一个数值。我正在尝试为它添加另一个数值,但它仍然会返回-Infinity。我试图在括号内移动+1。例如-Infinity

2 个答案:

答案 0 :(得分:6)

除非您将Infinity添加到-Infinity,否则您将始终得到答案-Infinity(向Infinity添加NaN会给您-Infinity + 1)。如果我们知道-Infinity等于什么,我们就知道// Function detectAndDisplay void detectAndDisplay(Mat frame) { std::vector<Rect> faces; Mat frame_gray; Mat crop; Mat res; Mat gray; string text; stringstream sstm; cvtColor(frame, frame_gray, COLOR_BGR2GRAY); equalizeHist(frame_gray, frame_gray); // Detect faces face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30)); // Set Region of Interest cv::Rect roi_b; cv::Rect roi_c; size_t ic = 0; // ic is index of current element int ac = 0; // ac is area of current element size_t ib = 0; // ib is index of biggest element int ab = 0; // ab is area of biggest element for (ic = 0; ic < faces.size(); ic++) // Iterate through all current elements (detected faces) { roi_c.x = faces[ic].x; roi_c.y = faces[ic].y; roi_c.width = (faces[ic].width); roi_c.height = (faces[ic].height); ac = roi_c.width * roi_c.height; // Get the area of current element (detected face) roi_b.x = faces[ib].x; roi_b.y = faces[ib].y; roi_b.width = (faces[ib].width); roi_b.height = (faces[ib].height); ab = roi_b.width * roi_b.height; // Get the area of biggest element, at beginning it is same as "current" element if (ac > ab) { ib = ic; roi_b.x = faces[ib].x; roi_b.y = faces[ib].y; roi_b.width = (faces[ib].width); roi_b.height = (faces[ib].height); } crop = frame(roi_b); resize(crop, res, Size(128, 128), 0, 0, INTER_LINEAR); // This will be needed later while saving images cvtColor(crop, gray, CV_BGR2GRAY); // Convert cropped image to Grayscale // Form a filename filename = ""; stringstream ssfn; ssfn << filenumber << ".png"; filename = ssfn.str(); filenumber++; imwrite(filename, gray); printf("filename"); Point pt1(faces[ic].x, faces[ic].y); // Display detected faces on main window - live stream from camera Point pt2((faces[ic].x + faces[ic].height), (faces[ic].y + faces[ic].width)); rectangle(frame, pt1, pt2, Scalar(0, 255, 0), 2, 8, 0); } // Show image /*sstm << "Crop area size: " << roi_b.width << "x" << roi_b.height << " Filename: " << filename; text = sstm.str(); putText(frame, text, cvPoint(30, 30), FONT_HERSHEY_COMPLEX_SMALL, 0.8, cvScalar(0, 0, 255), 1, CV_AA); imshow("original", frame); if (!crop.empty()) { imshow("detected", crop); } else destroyWindow("detected");*/ 等于什么(作为数字),这将使它成为有限数而不是无限数

答案 1 :(得分:2)

正如旁注,因为我们谈论的是javascript,

Infinity 之前有一个值。

我没有关于它的资源,但似乎Infinity之前的最大值是-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.99999 //+ infinity of 9

您可以使用相同的数字*-1-∞

之前找到悬崖

在浮点数变成int之前还有一个悬崖,看一下片段。

var cliffBeforeInfinity = 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.99999; //+ infinity of 9

var realInfinity= 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792;

var almost_zero = 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125001;

var zero = 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000247032822920623272088284396434110686182529901307162382212792841250337753635104375932649918180817996189898282347722858865463328355177969898199387398005390939063150356595155702263922908583924491051844359318028499365361525003193704576782492193656236698636584807570015857692699037063119282795585513329278343384093519780155312465972635795746227664652728272200563740064854999770965994704540208281662262378573934507363390079677619305775067401763246736009689513405355374585166611342237666786041621596804619144672918403005300575308490487653917113865916462395249126236538818796362393732804238910186723484976682350898633885879256283027559956575244555072551893136908362547791869486679949683240497058210285131854513962138377228261454376934125320985913276672363281245;

var p = document.querySelector('p');
p.innerHTML+='cliff Before Infinity : '+cliffBeforeInfinity;
p.innerHTML+='<br>';
p.innerHTML+='Infinity : '+ realInfinity;
p.innerHTML+='<br>';
p.innerHTML+='cliff before -Infinity : '+cliffBeforeInfinity*-1;
p.innerHTML+='<br>';
p.innerHTML+='-Infinity : '+realInfinity*-1;
p.innerHTML+='<br>';
p.innerHTML+='almost zero : '+almost_zero;
p.innerHTML+='<br>';
p.innerHTML+='zero : '+ zero;
<p></p>