浮点数介绍

简介: 【10月更文挑战第21天】

浮点数是一种计算机中用来表示小数的方法,它能够表示非常大或非常小的数值,并且具有一定的精度。浮点数是基于科学记数法的,由两部分组成:一个基数(通常是一个小数)和一个指数。在大多数现代计算机系统中,浮点数的表示遵循IEEE 754标准。
以下是一些关于浮点数的关键点:

  1. 表示形式:浮点数通常表示为 M x 2^E 的形式,其中 M 是基数(也称为尾数或有效数字),而 E 是指数。
  2. 精度:浮点数的精度取决于基数部分的位数。例如,在IEEE 754标准中,单精度(32位)浮点数有24位用于表示基数,而双精度(64位)浮点数有53位用于表示基数。
  3. 范围:浮点数的范围取决于指数部分可以表示的最大值和最小值。例如,单精度浮点数的指数范围大约是 -128127,而双精度浮点数的指数范围大约是 -10241023
  4. 精度限制:由于计算机使用有限的位数来表示浮点数,因此无法精确表示所有实数。这可能导致舍入误差,特别是在进行大量计算时。
  5. 特殊值:IEEE 754标准定义了一些特殊的浮点数值,如无穷大(Infinity)、非数(NaN,表示无法定义或未定义的数值),以及正零和负零。

浮点数序列指的是一系列的浮点数,它们可以是按照某种规则(如等差或等比)排列的。以下是一些不同编程语言中生成和打印浮点数序列的示例:

Python

def print_float_sequence(start, end, step):
    current = start
    while current <= end:
        print(current)
        current += step
print_float_sequence(0.0, 10.0, 0.5)

Java

public class Main {
   
    public static void main(String[] args) {
   
        printFloatSequence(0.0, 10.0, 0.5);
    }
    public static void printFloatSequence(double start, double end, double step) {
   
        for (double i = start; i <= end; i += step) {
   
            System.out.println(i);
        }
    }
}

JavaScript

function printFloatSequence(start, end, step) {
   
    for (let i = start; i <= end; i += step) {
   
        console.log(i.toFixed(1));  // 保留一位小数
    }
}
printFloatSequence(0.0, 10.0, 0.5);

C

using System;
public class Program
{
   
    public static void Main()
    {
   
        PrintFloatSequence(0.0, 10.0, 0.5);
    }
    public static void PrintFloatSequence(double start, double end, double step)
    {
   
        for (double i = start; i <= end; i += step)
        {
   
            Console.WriteLine(i.ToString("F1"));  // 保留一位小数
        }
    }
}

Ruby

def print_float_sequence(start, end, step)
  (start..end).step(step).each do |i|
    puts i.round(1)  # 保留一位小数
  end
end
print_float_sequence(0.0, 10.0, 0.5)

这些示例中的函数和方法都接受三个参数:序列的起始值(start)、结束值(end)和步长(step)。它们按照指定的步长从起始值迭代到结束值,并在每次迭代中打印当前的浮点数。由于浮点数的精度问题,通常使用toFixed(JavaScript)、ToString("F1")(C#)或round(1)(Ruby)来控制输出的小数位数。在Python中,通常不需要额外的格式化,因为默认的打印行为就足够用于展示浮点数。

相关文章
|
测试技术 Android开发 iOS开发
一分钟教你Android、iOS如何实现自动化录屏,超实用!
在做移动端自动化测试的过程中,有很多场景需要录制设备的屏幕视频,比如Crash现场记录,启动/页面加载耗时类的评测等,那么如何实现Android和iOS设备的屏幕录制呢?
1486 0
|
1月前
|
存储 弹性计算 运维
阿里云轻量应用服务器和云服务器区别——ECS和轻量如何选择?
阿里云轻量应用服务器简化易用,适合个人及轻量场景;ECS功能强大、弹性灵活,适用于企业级复杂业务。根据需求选择:轻量型选SWAS,高性能选ECS。
|
小程序 搜索推荐 JavaScript
微信小程序使用Vant
微信小程序使用Vant
623 2
Porfinet从转Ethernet/IP从总线协议转换网关
通过使用协议转换网关,可以有效实现PROFINET与EtherNet/IP之间的通信互操作,提升工业自动化系统的灵活性和兼容性。关键在于选择合适的网关设备,正确配置网络和协议参数,确保数据的准确传输和实时通信。通过以上步骤,可以顺利实现从PROFINET到EtherNet/IP的协议转换,满足复杂工业环境中的多协议集成需求。
434 31
|
12月前
|
机器学习/深度学习 自然语言处理 算法
Transformer 学习笔记 | Decoder
本文记录了笔者学习Transformer的过程,重点介绍了填充(padding)和掩码(masking)机制。掩码确保解码器只依赖于之前的位置,避免信息泄露,保持因果关系及训练与推理的一致性。通过线性层和softmax函数生成输出概率,并使用梯度下降和反向传播进行训练。评估指标包括BLEU、ROUGE、METEOR和困惑度等。欢迎指正。
|
人工智能 Cloud Native 安全
圆桌会议:聚焦AI时代机遇下操作系统产业的进化与重构 | 2024龙蜥大会主论坛
2024龙蜥大会主论坛聚焦AI时代的操作系统产业进化与重构。专家们围绕开源社区建设、商业化衍生、替代方案及AI应用等议题展开讨论。中国工程院陈纯院士强调开源社区的重要性,阿里云蒋江伟提出操作系统的兼容性和包容性,AMD潘晓明表示将加强国际合作,中兴通讯刘东则探讨了操作系统与AI的深度融合。会议一致认为,龙蜥操作系统应抓住AI发展机遇,构建安全可靠的生态体系,推动国产操作系统走向国际化。
274 3
|
存储 缓存 Java
深入理解JMM
深入理解JMM
1199 2