WPF 3D图形编程核心技术解析
一、三维坐标系系统
WPF采用右手坐标系系统,空间定位遵循:
X 轴 → 右 Y 轴 → 上 Z 轴 → 观察方向 X轴 \rightarrow 右\quad Y轴 \rightarrow 上\quad Z轴 \rightarrow 观察方向 X轴→右Y轴→上Z轴→观察方向
三维坐标值表示为 ( x , y , z ) (x, y, z) (x,y,z),旋转角度使用欧拉角体系。当进行三维变换时,遵循矩阵组合规律:
M t r a n s f o r m = M t r a n s l a t i o n × M r o t a t i o n × M s c a l e M_{transform} = M_{translation} \times M_{rotation} \times M_{scale} Mtransform=Mtranslation×Mrotation×Mscale
二、视口与摄像机
如果使用3D内容,就需要有容器来包含3D内容。这个容器是Viewport3D类,该类位
于System.Windows.Controls名称空间。Viewport3D类继承自FrameworkElement类,所以它可
以放到能够放置正常元素的任何地方。例如,可以使用它作为窗口或页面的内容,也可以将它
放到更复杂的布局中。
Viewport3D类只应用于复杂的3D编程。它常用的两个属性——Camera和Children
- Camera属性 定义了3D场景的观察者(相机)
- Children属性包含了希望放在场景中的所有3D对象。
当然,照亮3D场景的光源本身也是视口中的一个对象。
- Viewport3D容器结构代码
<Viewport3D x:Name="viewport3D"><!--相机--><Viewport3D.Camera><PerspectiveCamera Position="100,100,100" LookDirection="-100,-100,-100" UpDirection="0,0,1" FieldOfView="10"><PerspectiveCamera.Transform><RotateTransform3D CenterX="0" CenterY="0" CenterZ="0"><RotateTransform3D.Rotation><!--视野可以绕物体中心轴旋转--><AxisAngleRotation3D Axis="0 0 1" Angle="180"/></RotateTransform3D.Rotation></RotateTransform3D></PerspectiveCamera.Transform></PerspectiveCamera></Viewport3D.Camera><!--光源 离散的白色光源--><ModelVisual3D><ModelVisual3D.Content><Model3DGroup><AmbientLight Color="#999" /><!--点光源-光影层次感--><PointLight Color="#DDD" Position="100,0,100"/></Model3DGroup></ModelVisual3D.Content></ModelVisual3D><!--模型--><ModelVisual3D><ModelVisual3D.Content><Model3DGroup><GeometryModel3D><GeometryModel3D.Material><DiffuseMaterial Brush="Orange"/></GeometryModel3D.Material><GeometryModel3D.BackMaterial><DiffuseMaterial Brush="Orange"/></GeometryModel3D.BackMaterial><GeometryModel3D.Geometry><MeshGeometry3D Positions="2.5,0,0.5 -2.5,0,0.5 2.5,2,0.5 -2.5,2,0.52.5,0,0 -2.5,0,0 2.5,2,0 -2.5,2,0"TriangleIndices="0,2,1 1,2,3"/></GeometryModel3D.Geometry></GeometryModel3D></Model3DGroup></ModelVisual3D.Content></ModelVisual3D></Viewport3D>
运行效果
注意:
在Viewport3D类的继承属性中,有一个属性特别重要:ClipToBounds。如果将该属性设置
为true(默认值),超出视口边界的内容将被剪裁掉。如果设置为false,内容会显示在相邻元素
的上面。这种行为和Canvas控件的ClipToBounds属性的行为相同。然而,当使用Viewport3D
类时有如下重要的区别:性能。如果将Viewport3D.ClipToBounds属性设置为false,当渲染复
杂的、频繁更新的3D场景时,可显著提高性能。
- 摄像机类型对比
- PerspectiveCamera(透视投影)
<PerspectiveCamera Position="0,0,5" LookDirection="0,0,-1" UpDirection="0,1,0"FieldOfView="60"/>
- OrthographicCamera(正交投影)
<OrthographicCameraPosition="0,0,5"LookDirection="0,0,-1"Width="10"/>
三、光照体系
光照类型 | 特点 | 适用场景 |
---|---|---|
AmbientLight | 均匀环境光 | 基础照明 |
DirectionalLight | 平行光源(类似太阳光) | 主体照明 |
PointLight | 点光源(球状衰减) | 局部照明 |
SpotLight | 聚光灯(锥形照射) | 特殊效果 |
<ModelVisual3D><ModelVisual3D.Content><DirectionalLight Color="White" Direction="-1,-1,-1"/></ModelVisual3D.Content>
</ModelVisual3D>
四、几何模型构建
- MeshGeometry3D核心属性
var geometry = new MeshGeometry3D {Positions = new Point3DCollection {new Point3D(-1,1,1), // 顶点坐标集合new Point3D(1,1,1),// ...其他顶点},TriangleIndices = new Int32Collection {0,1,2, // 三角形索引2,3,0,// ...其他面},TextureCoordinates = new PointCollection {new Point(0,0), // 纹理坐标new Point(1,0),// ...其他贴图坐标}
};
- 材质与着色器
<GeometryModel3D.Material><MaterialGroup><DiffuseMaterial Brush="Blue"/><SpecularMaterial Brush="White" SpecularPower="20"/></MaterialGroup>
</GeometryModel3D.Material>
五、WPF3D中常见的几个类
类名 | 说明 |
---|---|
Viewport3D | 定义了用于渲染3D对象的表面。它作为容器包含所有3D绘图的可见元素,是创建3D场景的基础组件。 |
ModelVisual3D | 包含在Viewport3D 中,负责展示3D模型的所有可见部分。支持对整个模型应用变换操作(如旋转、缩放和移动),以便调整模型在3D空间中的位置和方向。 |
GeometryModel3D | 是ModelVisual3D 的一个具体实现,用于定义3D模型的具体外观。它不仅包含几何形状(通过MeshGeometry3D 定义),还包含了材质信息,以确定模型的颜色和纹理等视觉属性。 |
Geometry3D | 抽象基类,提供了定义几何形状的基本框架。它的具体实现MeshGeometry3D 允许用户通过指定三角形的位置来构建复杂的3D模型。 |
Material | 抽象基类,用于定义应用于MeshGeometry3D 上的材质属性,影响3D模型的外观。包括EmissiveMaterial (自发光)、DiffuseMaterial (漫反射光)、SpecularMaterial (镜面反射光)等,以及可以通过MaterialGroup 将多种材质组合使用。 |
Light | 抽象基类,提供基础照明功能。其子类包括AmbientLight (环境光,无方向性)、DirectionalLight (定向光源,模拟太阳光)、PointLight (点光源,从一个点向四周均匀发光)和SpotLight (聚光灯,发出锥形光线)。这些光源共同作用,为3D场景提供逼真的光照效果。 |
Camera | 抽象基类,用于控制3D场景如何投影到2D显示表面上。PerspectiveCamera 模拟人眼视角,远处物体显得更小;OrthographicCamera 不考虑距离因素,适用于技术制图;而MatrixCamera 则允许更灵活地设置视图转换矩阵。 |
Transform3D | 抽象基类,提供对3D对象进行变换的能力。包括TranslateTransform3D (位移变换)、ScaleTransform3D (缩放变换)、RotateTransform3D (旋转变换)、MatrixTransform3D (基于矩阵的变换)和Transform3DGroup (组合多个变换)。 |
通过合理运用坐标系系统、摄像机配置、光照方案和材质组合,开发者可以构建出具有专业级表现力的三维交互界面。建议通过实际调试不同参数组合来深入理解各元素的视觉影响。
相关文章:
WPF 3D图形编程核心技术解析
一、三维坐标系系统 WPF采用右手坐标系系统,空间定位遵循: X 轴 → 右 Y 轴 → 上 Z 轴 → 观察方向 X轴 \rightarrow 右\quad Y轴 \rightarrow 上\quad Z轴 \rightarrow 观察方向 X轴→右Y轴→上Z轴→观察方向 三维坐标值表示为 ( x , y , z ) (x, y,…...
BLURRR剪辑软件免费版:创意剪辑,轻松上手,打造个性视频
BLURRR剪辑软件免费版是一款功能强大、简约易用且充满创意的视频剪辑软件。它集多种功能于一体,无论是新手还是资深用户,都能通过简单的操作剪辑出高质量、富有创意的视频。BLURRR不仅提供了丰富的剪辑工具,还划分了不同的内容模块࿰…...
TIME - MoE 模型代码 3.2——Time-MoE-main/time_moe/datasets/time_moe_dataset.py
源码:GitHub - Time-MoE/Time-MoE: [ICLR 2025 Spotlight] Official implementation of "Time-MoE: Billion-Scale Time Series Foundation Models with Mixture of Experts" 这段代码定义了一个用于时间序列数据处理的 TimeMoEDataset 类,支…...
解决SQL Server SQL语句性能问题(9)——正确使用索引
前述章节中,我们介绍和讲解了SQL调优所需要的基本知识和分析方法,那么,通过前述这些知识和方法定位到问题后,接下来,我们该怎么做呢?那就是本章的内容,给出解决SQL语句性能问题的、科学而合理的方案和方法。 本章主要对解决SQL语句性能问题的几种常用方法进行说明和讲解…...
【论文阅读】FreePCA
FreePCA: Integrating Consistency Information across Long-short Frames in Training-free Long Video Generation via Principal Component Analysis 原文摘要 问题背景 核心挑战: 长视频生成通常依赖在短视频上训练的模型,但由于视频帧数增加会导致数…...
leetcode 383. Ransom Note
题目描述 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {vector<int> table(26,0);for(char ch : magazine){table[ch-a];}for(char ch : ransomNote){table[ch-a]--;if(table[ch-a] < 0)return false;}return true;} };...
SAF利用由Varjo和AFormX开发的VR/XR模拟器推动作战训练
通过将AFormX的先进军用飞行模拟器与Varjo的行业领先的VR/XR硬件相结合,斯洛文尼亚武装部队正以经济高效、沉浸式的训练方式培训战斗机飞行员,以提高其战术准备和作战效率。 挑战:获得战术军事航空训练的机会有限 军事航空训练长期以来一直…...
基于公共卫生大数据收集与智能整合AI平台构建测试:从概念到实践
随着医疗健康数据的爆发式增长,如何有效整合、分析和利用这些数据已成为公共卫生领域的重要挑战。传统方法往往难以应对数据的复杂性、多样性和海量性,而人工智能技术的迅猛发展为解决这些挑战提供了新的可能性。基于数据整合与公共卫生大数据的AI平台旨在构建一个全面的生态…...
【Pandas】pandas DataFrame clip
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.clip([lower, upper, axis, inplace])用于截…...
深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)
博主简介:努力学习的22级本科生一枚 🌟;探索AI算法,C,go语言的世界;在迷茫中寻找光芒🌸 博客主页:羊小猪~~-CSDN博客 内容简介:常见目标检测算法简介…...
嵌套路由~
### 作业 - App.vue vue <script setup></script> <template> <router-link to"/home">首页</router-link> <router-link to"/profile">个人资料</router-link> <router-link to"/posts"&g…...
影楼精修-牙齿美型修复算法解析
本文介绍影楼修图中的牙齿美型修复功能的算法实现。 我们大部分人的牙齿看起来都可能会有一些问题,比如牙齿不平整,大门牙,牙齿泛黄,牙齿发黑,牙齿残缺等等,拍照之后影响美观度,正是这个爱美的…...
k8s之ingress
在前面我们已经知道,Service对集群之外暴露服务的主要方式有两种:NodePort 和 LoadBalance,但是这两种方式,都有一定的缺点 NodePort方式的缺点是会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就更加明显,L4转发,无法根据http header和path进行路由转发…...
PDF文档解析新突破:图表识别、公式还原、手写字体处理,让AI真正读懂复杂文档!
要想LLM大模型性能更佳,我们需要喂给模型看得懂的高质量数据。那有没有一种方法,能让我们把各种文档“读懂”,再喂给大模型使用呢? 如果你用传统OCR工具直接从PDF中提取文本,结果往往是乱序、缺失、格式错乱。因为实际…...
Ubuntu 第11章 网络管理_常用的网络配置命令
为了管理网络,Linux提供了许多非常有用的网络管理命令。利用这些命令,一方面可以有效地管理网络,另一方面出现网络故障时,可以快速进行诊断。本节将对Ubuntu提供的网络管理命令进行介绍。 11.2.1 ifconfig命令 关于ifconfig命令&…...
C++ 观察者模式详解
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象(主题)状态改变时,所有依赖它的对象(观察者)都会自动得到通知并更新。 核…...
不止是UI库:React如何重塑前端开发范式?
React:引领现代前端开发的声明式UI库 在当今快速发展的前端世界,React以其声明式、组件化和高效的特性,稳坐头把交椅,成为构建交互式用户界面的首选JavaScript库。本文将带你快速了解React的核心魅力、主要优势以及生态发展&…...
MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.
运行课程讲解内容出现这个报错: 1、在电脑里解压之前发过的Hadoop安装包 2、配置用户变量 3、配置系统变量 4、配置系统Path变量 5、下载链接的两个文件: 链接: https://pan.baidu.com/s/1aCcpGGR1EE4hEZW624rFmQ?pwd56tv 提取码: 56tv –来自百度…...
深入探索Laravel框架中的Blade模板引擎
Laravel是一个广泛使用的PHP框架,以其简洁、优雅和强大的功能著称。Blade是Laravel内置的模板引擎,提供了一套简洁而强大的模板语法,帮助开发者轻松构建视图层。本文将深入探讨Blade模板引擎的特性、使用方法和最佳实践。 1. Blade模板引擎简…...
分析NVIDIA的股价和业绩暴涨的原因
NVIDIA自2016年以来股价与业绩的持续高增长,是多重因素共同作用的结果。作为芯片行业的领军企业,NVIDIA抓住了技术、战略、市场与行业趋势的机遇。以下从技术创新、战略布局、市场需求、财务表现及外部环境等维度,深入分析其成功原因…...
P2572 [SCOI2010] 序列操作 Solution
Description 给定 01 01 01 序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),并定义 f ( l , r ) [ ( ∑ i l r a i ) r − l 1 ] f(l,r)[(\sum\limits_{il}^r a_i)r-l1] f(l,r)[(il∑rai)r−l1]. 执行 m m m 个操作&am…...
初等数论--欧拉函数积性的证明
文章目录 1. 简介2. 证明一:唯一分解定理容斥原理3. 证明二:中国剩余定理4. 引理证明5. 参考 1. 简介 欧拉函数 ϕ ( n ) \phi(n) ϕ(n)表示在小于等于 n n n的正整数中与 n n n互质的个数。 如 ϕ ( 6 ) 2 ( 1 5 ) ϕ ( 12 ) 4 ( 1 5 7 11 ) \phi(…...
MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议
核心定义 MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议,通过安全可控的方式向AI应用暴露数据和功能。主要提供以下能力: 标准化的上下文管理安全的功能调用接口跨平台的数据交…...
Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」
Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」 前言一、Midscene.js 简介二、环境准备与插件安装1. 安装 Chrome 插件2. 配置模型与 API Key三、插件界面与功能总览四、实战演练:用自然语言驱动网页自动化1. 典型场景一(Action):账号登录步骤一:打开…...
Python在大数据机器学习模型的多模态融合:深入探索与实践指南
一、多模态融合的全面概述 1.1 多模态融合的核心概念 多模态融合(Multimodal Fusion)是指将来自不同传感器或数据源(如图像、文本、音频、视频、传感器数据等)的信息进行有效整合,以提升机器学习模型的性能和鲁棒性。在大数据环境下,多模态融合面临着独特的挑战和机遇: 数…...
C++ 访问者模式详解
访问者模式(Visitor Pattern)是一种行为设计模式,它允许你将算法与对象结构分离,使得可以在不修改现有对象结构的情况下定义新的操作。 核心概念 设计原则 访问者模式遵循以下设计原则: 开闭原则:可以添…...
实验-有限状态机2(数字逻辑)
目录 一、实验内容 1.1 介绍 1.2 内容 二、实验步骤 2.1 电路原理图 2.2 步骤 2.3 状态图 4.4 状态转换表和输出表 2.5 具体应用场景 三、调试 四、实验使用环境 五、实验小结与思考 5.1 遇到的问题及解决方法 5.2 实验收获 一、实验内容 1.1 介绍 在解决更复…...
IC解析之TPS92682-Q1(汽车LED灯控制IC)
目录 1 IC特性介绍2 主要参数3 接口定义4 工作原理分析TPS92682-Q1架构工作模式典型应用通讯协议 控制帧应答帧协议5 总结 1 IC特性介绍 TPS92682 - Q1 是德州仪器(TI)推出的一款双通道恒压横流控制器,同时还具有各种电器故障保护,…...
数据结构-堆
目录 heapq 导入 初始化 插入元素 返回最小值 PriorityQueue 导入 初始化 入队 出队 堆是一颗树,其每个节点都有一个值,且(小根堆:每个父节点都小于等于其子节点 (在进树时不断进行比较 STL中的 priority…...
提升编程效率的利器:Zed高性能多人协作代码编辑器
在当今这个快节奏的开发环境中,一个高效、灵活的代码编辑器无疑对开发者们起着至关重要的支持作用。Zed,作为来自知名编辑器Atom和语法解析器Tree-sitter的创造者的心血之作,正是这样一款高性能支持多人合作的编辑神器。本文将带领大家深入探…...
【25软考网工】第六章 网络安全(1)网络安全基础
博客主页: christine-rr-CSDN博客 专栏主页: 软考中级网络工程师笔记 大家好,我是christine-rr !目前《软考中级网络工程师》专栏已经更新二十多篇文章了,每篇笔记都包含详细的知识点,希望能帮助到你! 今日…...
Java中的包装类
目录 为什么要有包装类 包装类的作用 基本数据类型和包装类的对应关系 包装类的核心功能 装箱(Boxing)和拆箱(Unboxing) 装箱: 拆箱: 类型转换 字符串<----->基本类型 进制转换 自动装箱与…...
催缴机器人如何实现停车费追缴“零遗漏”?
面对高达35%的停车欠费率,传统人工催缴模式因效率低、成本高、覆盖有限等问题,难以应对海量欠费订单的挑战。本文带大家探究“催缴机器人”如何实现停车费追缴“零遗漏”,实现从“被动催缴”到“主动管理”的跨越。 智慧停车欠费自动化追缴系…...
Oracle 执行计划中的 ACCESS 和 FILTER 详解
Oracle 执行计划中的 ACCESS 和 FILTER 详解 在 Oracle 执行计划中,ACCESS 和 FILTER 是两个关键的操作类型,它们描述了 Oracle 如何检索和处理数据。理解这两个概念对于 SQL 性能调优至关重要。 ACCESS(访问) ACCESS 表示 Ora…...
使用FastAPI微服务在AWS EKS中构建上下文增强型AI问答系统
系统概述 本文介绍如何使用FastAPI在AWS Elastic Kubernetes Service (EKS)上构建一个由多个微服务组成的AI问答系统。该系统能够接收用户输入的提示(prompt),通过调用其他微服务从AWS ElastiCache on Redis和Amazon DynamoDB获取相关上下文,然后利用AW…...
oracle dblink varchar类型查询报错记录
在使用Oracle DBLink(数据库链接)查询VARCHAR类型数据时,有时会遇到报错问题。这些错误可能与数据类型转换、字符集设置、数据库版本兼容性等因素有关。本文将详细分析常见的报错原因及其解决方法。 一、常见报错及其原因 1. ORA-01722: in…...
计算人声录音后电平的大小(dB SPL->dBFS)
计算人声录音后电平的大小 这里笔记记录一下,怎么计算已知大小的声音,经过麦克风、声卡录制后软件内录得的音量电平值。(文章最后将计算过程整理为Python代码,方便复用) 假设用正常说话的声音大小65dB(SP…...
Android kernel日志中healthd关键词意义
Android kernel日志中healthd关键词意义 在kernel的healthd日志中会打印电池信息。通常比较关心的是电池温度,剩余电量,电压,电池健康,电池状况等。 level:剩余电量。 voltage:电压。 temperatureÿ…...
操作系统面试问题(4)
32.什么是操作系统 操作系统是一种管理硬件和软件的应用程序。也是运行在计算机中最重要的软件。它为硬件和软件提供了一种中间层,让我们无需关注硬件的实现,把心思花在软件应用上。 通常情况下,计算机上会运行着许多应用程序,它…...
【nestjs】一般学习路线
nestjs中文文档 其实几个月前也对nestjs进行了学习,前前后后看了很多文档、博客,另外也找了相应的代码看了,但最后也还是一知半解,只是知道大概怎么写,怎么用。 这次下定决心再次看一遍,从代码学习到文档…...
多线程面试题总结
基础概念 进程与线程的区别 进程:操作系统资源分配的基本单位,有独立内存空间线程:CPU调度的基本单位,共享进程资源对比: 创建开销:进程 > 线程通信方式:进程(IPC)、线程(共享内存)安全性:进程更安全(隔离),线程需要同步线程的生命周期与状态转换 NEW → RUNNABLE …...
面试常考算法2(核心+acm模式)
15. 三数之和 核心代码模式 class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> ansnew ArrayList<>();Arrays.sort(nums);int lennums.length;int pre2000000;for(int i0;i<len-2;i){while(i<len-…...
虚拟文件系统
虚拟文件系统(Virtual File System,VFS)是操作系统内核中的一个抽象层,它为不同的文件系统(如ext4、NTFS、FAT32等)提供统一的访问接口。通过VFS,用户和应用程序无需关心底层文件系统的具体差异…...
机器学习与深度学习的区别与联系:多角度详细分析
机器学习与深度学习的区别与联系:多角度详细分析 引言 随着人工智能技术的快速发展,机器学习和深度学习已成为当今科技领域的核心驱动力。尽管这两个术语经常被一起提及,甚至有时被互换使用,但它们之间存在着明显的区别和紧密的…...
c++:迭代器(Iterator)
目录 🚪什么是迭代器? 🔧 迭代器的本质 为什么不用普通数组或下标? STL容器的迭代器并不是共用一个类型! 迭代器的类型(Iterator Categories) 📦 常见容器的迭代器类型 ✅ 迭…...
MindSpore框架学习项目-ResNet药物分类-数据增强
目录 1.数据增强 1.1设置运行环境 1.1.1数据预处理 数据预处理代码解析 1.1.2数据集划分 数据集划分代码说明 1.2数据增强 1.2.1创建带标签的可迭代对象 1.2.2数据预处理与格式化(ms的data格式) 从原始图像数据到 MindSpore 可训练 / 评估的数…...
python打卡day20
特征降维------特征组合(以SVD为例) 知识点回顾: 奇异值的应用: 特征降维:对高维数据减小计算量、可视化数据重构:比如重构信号、重构图像(可以实现有损压缩,k 越小压缩率越高&#…...
2025数维杯数学建模B题完整限量论文:马拉松经济的高质量发展思路探索
2025数维杯数学建模B题完整限量论文:马拉松经济的高质量发展思路探索,先到先得 B题完整论文https://www.jdmm.cc/file/2712066/ 近年来,我国马拉松赛事数量呈现 “ 先井喷、后调整、再复苏 ” 的显著 变化。据中国田径协会数据, …...
深入解析WPF中的3D图形编程:材质与光照
引言 在Windows Presentation Foundation (WPF) 中创建三维(3D)图形是一项既有趣又具有挑战性的任务。为了帮助开发者更好地理解如何使用WPF进行3D图形的渲染,本文将深入探讨GeometryModel3D类及其相关的材质和光源设置。 1、GeometryModel3D类简介 GeometryMode…...
python格式化小数加不加f的区别
一直好奇这个f是必须加的吗,但是不论是搜索还是ai都给不出准确的回复,就自己测试了一下 结论是不带f指定的是总的数字个数,包含小数点前的数字 带f的就是仅指小数点后数字个数 需要注意的是不带f的话数字是会用科学计数法表示的ÿ…...