var sum = 0; for(var i = 0; i < 10; i++) { sum += 0.1; } console.log(sum);
위 프로그램은 1을 출력할까요?
당신이 알아야 할 JavaScript 인터뷰 질문 25가지 기사에서 8번째 질문은 js가 소수 연산을 올바르게 처리할 수 없는 이유를 간략하게 설명합니다. 오늘 저는 오래된 주제를 다시 살펴보고 이 문제를 더 깊은 방식으로 분석하겠습니다.
그러나 우선, 소수 연산을 올바르게 처리하지 못하는 것은 JavaScript 언어 자체의 설계 오류가 아니라는 점에 유의해야 합니다. C, Java 등과 같은 다른 고급 프로그래밍 언어도 처리할 수 없습니다. 소수 연산을 올바르게 처리하려면:
#include <stdio.h> void main(){ float sum; int i; sum = 0; for(i = 0; i < 100; i++) { sum += 0.1; } printf('%f\n', sum); //10.000002 }
컴퓨터 내부의 숫자 표현
우리 모두는 고급 프로그래밍 언어로 작성된 프로그램이 실행되기 전에 해석, 컴파일 및 기타 작업을 통해 CPU(중앙 처리 장치)가 인식할 수 있는 기계어로 변환해야 한다는 것을 알고 있습니다. , CPU의 경우 8진수, 16진수 등의 10진수 및 10진수 체계를 인식하지 못하므로 프로그램에서 선언한 이러한 기본 숫자는 계산을 위해 2진수로 변환됩니다.
계산을 위해 삼항수로 변환해 보는 것은 어떨까요?
컴퓨터 내부는 IC(Integrated Circuit: 집적회로) 등 수많은 전자부품으로 이루어져 있습니다.
IC는 모양이 다양하며, 양쪽 또는 내부에 많은 핀이 나란히 배열되어 있습니다(그림에는 한쪽 면만 표시됨). IC의 모든 핀에는 DC 전압 0V 또는 5V의 두 가지 상태만 있습니다. 즉, 하나의 IC 핀은 두 가지 상태만 나타낼 수 있습니다. IC의 이러한 특성으로 인해 컴퓨터 내부의 데이터는 이진수로만 처리될 수 있습니다.
1비트(핀 1개)는 두 가지 상태만 나타낼 수 있으므로 이진 계산 방법은 0, 1, 10, 11, 100... 이 형식이 됩니다.
따라서 숫자 연산에서는 모든 피연산자가 연산에 참여하기 위해 이진수로 변환됩니다. 예를 들어 39는 이진수 00100111로 변환됩니다
소수의 이진 표현
위에서 언급한 것처럼 프로그램의 데이터는 연산에 포함되는 경우 이진수로 변환됩니다. 예를 들어 십진수 11.1875는 1101.0010으로 변환됩니다.
이진수에서 소수점 이하 4자리로 표현되는 수치 범위는 0.0000~0.1111입니다. 따라서 이는 4개의 소수점 0.5, 0.25, 0.125, 0.0625와 그 뒤의 비트 가중치의 조합(덧셈)만을 나타낼 수 있습니다. 소수점:
위 표에서 볼 수 있듯이 십진수 0의 다음 자리는 0.0625입니다. 따라서 0에서 0.0625 사이의 소수는 소수점 이하 4자리의 이진수로 표현할 수 없습니다. 소수점, 해당 소수점 자릿수도 늘어나는데, 아무리 자릿수를 더해도 0.1이라는 결과는 얻을 수 없습니다. 실제로 0.1을 바이너리로 변환하면 0.00110011001100110011이 됩니다... 0011은 무한 반복된다는 점 참고하세요:
console.log(0.2+0.1); //操作数的二进制表示 0.1 => 0.0001 1001 1001 1001…(无限循环) 0.2 => 0.0011 0011 0011 0011…(无限循环)
js의 Number형은 C/Java처럼 정수형, 단정밀도, 배정밀도 등으로 구분되지 않고 배정밀도 부동소수점형으로 일률적으로 표현됩니다. IEEE 규정에 따르면 단정밀도 부동 소수점 숫자는 모든 소수를 표현하기 위해 32비트를 사용하고, 배정밀도 부동 소수점 숫자는 모든 소수를 표현하기 위해 64비트를 사용합니다. 부동 소수점 숫자는 부호, 가수, 지수 및 밑수로 구성됩니다. , 따라서 모든 숫자가 사용되는 것은 아닙니다. 소수, 기호, 지수 등도 숫자를 차지해야 하며 밑수는 숫자를 차지하지 않습니다.
배정밀도 부동 소수점 숫자의 소수 부분은 최대 52자리를 지원하므로 두 자리를 더하면 0.0100110011001100110011001100110011001100...의 소수 자릿수 제한으로 인해 잘린 이진수 문자열이 생성됩니다. 이때 부동소수점 숫자를 10진수로 변환하면 0.30000000000000004가 됩니다.
요약
js는 다른 고급 프로그래밍 언어를 포함하여 소수 연산을 올바르게 처리할 수 없습니다. 이는 언어 자체의 설계 오류는 아니지만 컴퓨터 자체가 소수 연산을 올바르게 처리하지 못하는 경우가 많습니다. 소수는 이진수로 표현될 수 있습니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

如何使用JS和百度地图实现地图多边形绘制功能在现代网页开发中,地图应用已经成为常见的功能之一。而地图上绘制多边形,可以帮助我们将特定区域进行标记,方便用户进行查看和分析。本文将介绍如何使用JS和百度地图API实现地图多边形绘制功能,并提供具体的代码示例。首先,我们需要引入百度地图API。可以利用以下代码在HTML文件中导入百度地图API的JavaScript

js字符串转数组的方法:1、使用“split()”方法,可以根据指定的分隔符将字符串分割成数组元素;2、使用“Array.from()”方法,可以将可迭代对象或类数组对象转换成真正的数组;3、使用for循环遍历,将每个字符依次添加到数组中;4、使用“Array.split()”方法,通过调用“Array.prototype.forEach()”将一个字符串拆分成数组的快捷方式。

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

js中new操作符做了:1、创建一个空对象,这个新对象将成为函数的实例;2、将新对象的原型链接到构造函数的原型对象,这样新对象就可以访问构造函数原型对象中定义的属性和方法;3、将构造函数的作用域赋给新对象,这样新对象就可以通过this关键字来引用构造函数中的属性和方法;4、执行构造函数中的代码,构造函数中的代码将用于初始化新对象的属性和方法;5、如果构造函数中没有返回等等。

这篇文章主要为大家详细介绍了js实现打字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

php在特定情况下可以读js内部的数组。其方法是:1、在JavaScript中,创建一个包含需要传递给PHP的数组的变量;2、使用Ajax技术将该数组发送给PHP脚本。可以使用原生的JavaScript代码或者使用基于Ajax的JavaScript库如jQuery等;3、在PHP脚本中,接收传递过来的数组数据,并进行相应的处理即可。

js全称JavaScript,是一种具有函数优先的轻量级,直译式、解释型或即时编译型的高级编程语言,是一种属于网络的高级脚本语言;JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式,如函数式编程。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
