<p>有时我们需要控制输出的数字的格式,如何使用java的类库做到这个呢? <br>也许你不关心格式,但是你需要关心你的程序可以在全世界通用,像下面的这样一个简单的语句是依赖地区的: <br> System.out.println(1234.56); <br>在美国,"." 是小数点,但在其它地方就不一定了。如何处理这个呢? <br>java.text 包中的一些包可以处理这类问题。下面的简单范例使用那些类解决上面提出的问题: <br> import java.text.NumberFormat; <br> import java.util.Locale; <br> public class DecimalFormat1 { <br> public static void main(String args[]) { <br> // 得到本地的缺省格式 <br> NumberFormat nf1 = NumberFormat.getInstance(); <br> System.out.println(nf1.format(1234.56)); <br> // 得到德国的格式 <br> NumberFormat nf2 = <br> NumberFormat.getInstance(Locale.GERMAN); <br> System.out.println(nf2.format(1234.56)); <br> } <br> } <br>如果你在美国,运行程序后输出: <br> 1,234.56 <br> 1.234,56 <br>换句话说,在不同的地方使用不同的习惯表示数字。 <br>NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置格式化一个数字。你也可以使用非缺省的地区设置,例如德国。然后格式化方法根据特定的地区规则格式化数字。这个程序也可以使用一个简单的形式: <br> NumberFormat.getInstance().format(1234.56) <br>但是保存一个格式然后重用更加有效。国际化是格式化数字时的一个大问题。 <br>另一个是对格式的有效控制,例如指定小数部分的位数,下面是解决这个问题的一个简单例子: <br> import java.text.DecimalFormat; <br> import java.util.Locale; <br> public class DecimalFormat2 { <br> public static void main(String args[]) { <br> // 得到本地的缺省格式 <br>DecimalFormat df1 = new DecimalFormat("####.000"); <br> System.out.println(df1.format(1234.56)); <br> // 得到德国的格式 <br> Locale.setDefault(Locale.GERMAN); <br> DecimalFormat df2 = new DecimalFormat("####.000"); <br> System.out.println(df2.format(1234.56)); <br> } <br> } <br>在这个例子中设置了数字的格式,使用像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。程序的输出: <br> 1234.560 <br> 1234,560 <br>相似的,也可以控制指数形式的格式,例如: <br> import java.text.DecimalFormat; <br> public class DecimalFormat3 { <br> public static void main(String args[]) { <br> DecimalFormat df = new DecimalFormat("0.000E0000"); <br> System.out.println(df.format(1234.56)); <br> } <br> } <br>输出: <br> 1.235E0003 <br>对于百分数: <br> import java.text.NumberFormat; <br> public class DecimalFormat4 { <br> public static void main(String args[]) { </p> <p> NumberFormat nf = NumberFormat.getPercentInstance(); <br> System.out.println(nf.format(0.47)); <br> } <br> } <br>输出: <br> 47% <br>至此,你已经看到了格式化数字的几个不同的技术。另一方面,如何读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如: <br> import java.util.Locale; <br> import java.text.NumberFormat; <br>import java.text.ParseException; <br> public class DecimalFormat5 { <br> public static void main(String args[]) { <br> // 本地格式 <br> NumberFormat nf1 = NumberFormat.getInstance(); <br> Object obj1 = null; </p> <p> // 基于格式的解析 <br> try { <br> obj1 = nf1.parse("1234,56"); <br> } <br> catch (ParseException e1) { <br> System.err.println(e1); <br> } <br> System.out.println(obj1); <br> // 德国格式 <br> NumberFormat nf2 = <br> NumberFormat.getInstance(Locale.GERMAN); </p> <p> Object obj2 = null; <br> // 基于格式的解析 <br> try { <br> obj2 = nf2.parse("1234,56"); <br> } <br> catch (ParseException e2) { <br> System.err.println(e2); <br> } <br> System.out.println(obj2); <br> } <br> } <br>这个例子分两部分,都是解析一个字符串:"1234,56"。第一部分使用本地格式解析,第二部分使用德国格式解析。当程序在美国运行,结果是: <br> 123456 <br> 1234.56 <br>换句话说,"1234,56"在美国被认为是一个巨大的整数"123456"而在德国被认为是一个小数"1234.56"。 <br>还有格式化讨论的最后一个问题。在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于获得很好的格式控制,而NumberFormat 常用于指定不同于本地的地区。如何结合两个类呢? <br>答案围绕着这样的事实:DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。下面是一个这样的例子: <br> import java.text.DecimalFormat; <br> import java.text.NumberFormat; <br> import java.util.Locale; <br> public class DecimalFormat6 { <br> public static void main(String args[]) { </p> <p> DecimalFormat df = null; <br> // 得到一个NumberFormat 对象并 <br> // 强制转换为一个 DecimalFormat 对象 <br> try { <br> df = (DecimalFormat) <br> NumberFormat.getInstance(Locale.GERMAN); <br> } <br> catch (ClassCastException e) { <br> System.err.println(e); <br> } <br> // 设置格式模式 <br> df.applyPattern("####.00000"); <br>// format a number <br> System.out.println(df.format(1234.56)); <br> } <br> } </p> <p>getInstance() 方法获得格式,然后调用applyPattern()方法设置格式模式,输出: <br> 1234,56000 <br>如果你不关心国际化,可以直接使用DecimalFormat 。 </p>
分享到:
相关推荐
在这个主题下,我们将深入探讨四舍五入的定义、用途、方法以及在编程中实现四舍五入的常见算法。 四舍五入是一种在数学和计算机科学中常见的数值处理技巧,它用于将一个数字调整到指定的小数位数,同时保持结果的...
- NumberFormat类的用途:格式化数字。 - NumberFormat类的子类:DecimalFormat、PercentFormat等。 - **大数操作(BigIntger、BigDecimal)** - BigInteger类的特点:处理任意精度的整数。 - BigDecimal类的作用...
使用`Calendar`或`LocalDate`类计算昨天的日期,然后格式化输出。 #### 18. 抽象类和接口的区别 - 抽象类可以有部分实现,接口只有常量和抽象方法。 - 类可以继承一个抽象类,但只能实现多个接口。 #### 19. 类的...
- 可以使用`DecimalFormat`类进行格式化。 #### 26. 如何取得年月日,小时分秒? - 使用`java.time.LocalDateTime`或`java.time.ZonedDateTime`等类。 #### 27. 如何取得从1970年到现在的毫秒数 - 使用`System....
内容概要:本文《2025年全球AI Coding市场洞察研究报告》由亿欧智库发布,深入分析了AI编程工具的市场现状和发展趋势。报告指出,AI编程工具在2024年进入爆发式增长阶段,成为软件开发领域的重要趋势。AI编程工具不仅简化了代码生成、调试到项目构建等环节,还推动编程方式从人工编码向“人机协同”模式转变。报告详细评估了主流AI编程工具的表现,探讨了其商业模式、市场潜力及未来发展方向。特别提到AI Agent技术的发展,使得AI编程工具从辅助型向自主型跃迁,提升了任务执行的智能化和全面性。报告还分析了AI编程工具在不同行业和用户群体中的应用,强调了其在提高开发效率、减少重复工作和错误修复方面的显著效果。最后,报告预测2025年AI编程工具将在精准化和垂直化上进一步深化,推动软件开发行业进入“人机共融”的新阶段。 适合人群:具备一定编程基础,尤其是对AI编程工具有兴趣的研发人员、企业开发团队及非技术人员。 使用场景及目标:①了解AI编程工具的市场现状和发展趋势;②评估主流AI编程工具的性能和应用场景;③探索AI编程工具在不同行业中的具体应用,如互联网、金融、游戏等;④掌握AI编程工具的商业模式和盈利空间,为企业决策提供参考。 其他说明:报告基于亿欧智库的专业研究和市场调研,提供了详尽的数据支持和前瞻性洞察。报告不仅适用于技术从业者,也适合企业管理者和政策制定者,帮助他们在技术和商业决策中更好地理解AI编程工具的价值和潜力。
内容概要:本文探讨了一种创新的信号降噪方法,该方法结合了变分模态分解(VMD)和Cramer von Mises检验,在MATLAB R2018a环境中实现了对一维时间序列信号的有效降噪。文中详细介绍了算法的工作流程,从数据准备到最终的降噪处理,包括VMD分解和Cramer von Mises检验的具体步骤。此外,还提供了简化的MATLAB代码示例,帮助读者理解其实现方式。该方法适用于多种类型的信号,如金融时间序列、地震信号、机械振动信号等,展现了广泛的应用潜力。 适合人群:从事信号处理、数据分析的研究人员和技术人员,尤其是那些对MATLAB有一定了解并希望提升信号降噪效果的专业人士。 使用场景及目标:本方法旨在解决一维时间序列信号中存在的噪声问题,提高信号质量,增强数据的可用性和准确性。适用于金融、地质、机械工程、生物医学等领域的一维时间序列信号处理任务。 其他说明:文中提供的代码片段仅作示例,实际应用时需根据具体情况调整参数设置和处理逻辑。建议结合最新文献和官方文档深入学习VMD和Cramer von Mises检验的相关知识。
内容概要:本文详细介绍了11-2直流微电网的构成及其关键技术,旨在提升清洁能源和可持续能源的应用效果。首先阐述了PV+MPPT技术,通过最大功率点跟踪提高光伏发电效率;其次讨论了DCDC储能技术,用于平衡微电网的能量供需,确保稳定供电;接着介绍了三相并网的PQ控制策略,实现对外部电网的能量交换和功率因数调整;最后讲解了三相负载的VF控制,保障微电网提供稳定、高质量的电能,使波形保持优美。总结部分展望了直流微电网在未来清洁能源领域的更大作用。 适合人群:从事电力系统、新能源技术和微电网研究的专业人士和技术爱好者。 使用场景及目标:适用于希望深入了解直流微电网核心技术的研究人员和工程师,帮助他们掌握PV+MPPT、DCDC储能、三相并网PQ控制和三相负载VF控制的具体应用方法,以优化微电网的设计和运行。 其他说明:文中提到的技术不仅有助于提高微电网的效率和稳定性,还为未来的清洁能源发展提供了理论支持和技术指导。
单级热电制冷器件,全球前20强生产商排名及市场份额(by QYResearch).pdf
实训商业源码-WordPress主题-图片摄影作品展示自适应主题-毕业设计.zip
内容概要:WiFi 3(IEEE 802.11g)是无线网络发展历程中的重要里程碑,于2003年推出,旨在解决当时无线网络传输速度瓶颈问题。它工作在2.4GHz频段,采用正交频分复用(OFDM)技术,最大传输速率从802.11b的11Mbps提升至54Mbps,并保持与802.11b设备的兼容性,极大提升了用户体验。WiFi 3不仅在家庭、办公环境和公共场所广泛应用,还通过其优秀的兼容性和稳定性,加速了无线网络的普及。尽管随着WiFi 4、5、6等新一代标准的出现,WiFi 3逐渐退出主流市场,但在特定场景中仍发挥作用。未来,WiFi技术将继续发展,满足更高带宽和低延迟需求的应用场景。 适合人群:对无线网络技术发展感兴趣的读者,尤其是对历史和技术细节有一定了解的技术爱好者。 使用场景及目标:①了解WiFi 3在无线网络发展中的地位和作用;②掌握WiFi 3的技术特点及其与前后代标准的对比;③理解WiFi 3在特定场景下的应用及其逐渐被替代的原因。 其他说明:WiFi 3的成功不仅在于其技术上的突破,还在于其对市场需求的精准把握。它为后续WiFi标准的发展奠定了基础,并在无线网络技术的演进中发挥了承上启下的作用。尽管已被新一代标准取代,WiFi 3的技术理念和应用模式仍然影响深远。
内容概要:本文详细介绍了Abaqus相场法断裂模型及其在UMAT用户子程序中的实现。首先概述了Abaqus相场法断裂模型的基本概念,这是一种基于连续介质力学的数值模拟方法,能够有效模拟材料在复杂应力状态下的断裂行为。接着讨论了UMAT用户子程序的作用,即通过自定义材料本构关系,实现对材料力学行为的精确描述。文中还探讨了如何利用UMAT实现广义版本的相场断裂,支持多种断裂准则(如Drucker-Prager),并允许选择不同的裂纹密度函数,以适应不同的应用场景和材料特性。最后,强调了该模型在材料断裂分析中的重要性和广泛应用前景。 适合人群:从事材料科学、工程力学研究的专业人士,尤其是那些希望深入了解材料断裂机制并在实际项目中应用相关理论的研究人员和技术人员。 使用场景及目标:适用于需要进行材料断裂分析的工程项目,特别是涉及复杂应力状态下材料性能评估的情况。目标是帮助研究人员和工程师更准确地预测和分析材料的断裂行为,优化设计方案。 阅读建议:对于有兴趣深入理解Abaqus相场法断裂模型及其在UMAT用户子程序中实现的读者,建议仔细研读每部分内容,尤其是关于断裂准则和裂纹密度函数的选择部分,这有助于提高模拟的准确性。
内容概要:本文介绍了利用Carsim和Matlab/Simulink进行多点预瞄模糊控制的联合仿真的方法和技术细节。主要内容涵盖双移线工况下理想的轨迹生成、预瞄点处理模块的设计以及模糊控制器的具体实现。文中特别强调了动态调整预瞄点权重的方法及其对车辆侧向加速度的影响,并展示了不同驾驶条件下预瞄距离补偿机制的作用。此外,还提到了一些优化措施如移动平均滤波的应用来提高系统的稳定性和响应性能。 适用人群:汽车工程领域的研究人员、自动驾驶系统开发者、高校相关专业师生。 使用场景及目标:适用于需要深入理解和掌握复杂交通环境下的智能车辆控制系统设计的研究人员;旨在帮助读者构建高效的联合仿真平台,探索先进的路径规划和跟踪控制策略。 其他说明:提供的Simulink源码文件和详细的建模说明文档有助于加速项目开发流程并促进学术交流。
内容概要:本文详细介绍了基于邓肯张本构模型的FLAC3D三轴剪切试验模拟。首先概述了材料力学分析在工程领域的关键作用,接着介绍了邓肯张本构模型的基本概念及其在FLAC3D中的应用。然后,文章描述了实验模型的建立过程,包括加载和加卸载模拟的具体步骤。通过对应力应变曲线的分析,展示了材料在不同应力状态下的力学行为,特别是非线性和塑性变形特性。最后,讨论了FLAC3D本构模型的二次开发,强调了其在提高模型适用性和灵活性方面的作用。 适合人群:从事岩土工程、材料科学及相关领域的研究人员和技术人员。 使用场景及目标:适用于需要进行复杂应力应变分析的工程项目,旨在帮助工程师更准确地预测材料的力学性能,从而优化工程设计。 其他说明:本文不仅提供了详细的模拟过程和技术细节,还分享了实际操作中的经验和技巧,对于希望深入了解FLAC3D和邓肯张本构模型的读者非常有帮助。
实训商业源码-xycms_yly_v3.7-毕业设计.zip
内容概要:本文详细探讨了将碳捕集、垃圾焚烧和电转气(P2G)集成到虚拟电厂优化调度中的复杂性和解决方案。作者分享了自己在实验室内复现该模型的经验,重点介绍了如何通过Python建立目标函数和约束条件来实现三个系统的协同运作。具体来说,文章讨论了垃圾焚烧的热电联产稳定性、P2G设备对富余电能的转换以及碳捕集系统对二氧化碳的处理,并展示了如何利用最小化函数确保P2G产能上限和碳源自平衡。此外,还提到了解决时间尺度不一致的问题,采用滚动时间窗进行分层优化,从而提高整体效率并减少碳排放。最后强调了实际应用中需要考虑预测误差的容灾能力和弹性约束的重要性。 适合人群:从事能源系统优化、虚拟电厂设计的研究人员和技术人员,特别是关注低碳技术和可持续发展的专业人士。 使用场景及目标:适用于希望深入了解虚拟电厂内部工作机制及其优化方法的人群;旨在为相关领域的项目提供理论支持和技术指导,帮助提升能源利用效率和环境保护水平。 其他说明:文中提供的Python代码片段可用于构建类似的优化模型,但需要注意实际应用场景中的变量调整和参数设置。
内容概要:本文详细介绍了基于STM32的智能家居控制系统的设计与实现,重点在于自动与手动两种控制模式的切换以及对温湿度和光照的智能化管理。系统采用DHT11传感器进行温湿度监测,当温度超过30℃时触发警报,湿度超过50%时启动电机除湿;光照强度低于特定阈值时自动调节灯光亮度。手动模式允许用户通过按键调整各个设备的状态。文中还涉及了关键代码片段如DHT11的数据读取、ADC光照检测、按键处理状态机等,并分享了一些开发过程中遇到的实际问题及其解决方案,比如防止按键抖动、处理电机反向电动势等。 适合人群:具有一定嵌入式系统基础知识,尤其是熟悉STM32架构和C语言编程的学习者和技术人员。 使用场景及目标:适用于希望深入了解智能家居控制系统内部机制的人群,特别是那些想要掌握从硬件搭建到软件编码全过程的开发者。通过本项目的实践,能够更好地理解物联网(IoT)应用中常见的传感技术和控制逻辑。 其他说明:附带完整的仿真文件、源代码和演示视频,便于读者动手实验。文中提到的一些注意事项对于避免常见错误非常有用,例如正确配置Proteus中的元件连接方式、选择合适的硬件接口等。
实训商业源码-vuefilemanager-laravel-v2.0.2-毕业设计.zip
内容概要:本文档详细介绍了一个使用西门子博途软件和SCL语言编写的10层6梯电梯控制系统的设计与实现。主要内容涵盖电梯调度算法(如最近电梯选择)、人机界面(HMI)交互逻辑、高峰时段自动调度模式以及状态同步机制。文中提供了详细的代码示例和技术要点解析,帮助读者理解并掌握电梯控制系统的开发流程。 适合人群:对工业自动化感兴趣的初学者及希望深入了解PLC编程和SCL语言的中级开发者。 使用场景及目标:本项目的目的是为学生或工程师提供一个完整的电梯控制系统设计方案,可用于教学演示、实验研究或实际工程项目中。通过学习该项目,可以提高对PLC编程的理解,特别是SCL语言的应用技巧。 其他说明:随附有详细的梯形图和SCL源代码,支持WinCC仿真环境下的测试与验证。此外,还介绍了如何扩展系统功能,如增加物联网模块将电梯状态数据传输到云端。
内容概要:本文探讨了在低碳经济运行目标下,如何利用阶梯式碳交易机制和电制氢技术优化综合能源系统(IES)。研究引入了电解槽、甲烷反应器和氢燃料电池(HFC),替代传统的电转气(P2G)工艺,提出了热电比可调的热电联产和HFC运行策略,旨在降低购能成本、碳排放成本和弃风成本。通过构建混合整数线性规划模型并使用CPLEX求解器进行求解,验证了所提方法的有效性和经济性。实际案例显示,该策略显著降低了碳排放成本,并提高了系统的灵活性和适应性。 适合人群:从事能源管理和优化的研究人员、工程师以及政策制定者。 使用场景及目标:适用于需要优化能源系统、减少碳排放的企业和机构,特别是那些希望引入电制氢技术和阶梯式碳交易机制的单位。目标是提升能源系统的经济性和环保性能。 其他说明:文中详细讨论了关键组件如电解槽、氢燃料电池的工作原理及其在不同时间段的操作策略,强调了参数设置对系统性能的影响。同时指出,在实际应用中还需考虑设备启停的磨损成本等未被广泛提及的因素。
Advanced RF Board Skills in ADS