java字符串各个字符计数_没有科学计数法的Java十进制数的简单字符串表示形式...

java字符串各个字符计数

Java中用于十进制数字的主要类型 /对象是float / Float , double / Double和BigDecimal 。 在每种情况下,其“默认”字符串表示形式都是“计算机科学计数法”。 这篇文章演示了一些简单的方法,可以在没有科学符号的情况下提供十进制数的字符串表示形式。

本文中的示例将演示这些Java数值类型的“默认”科学表示法,其中每种类型的数字都使用一定范围的数字表示,这些数字表示了每种类型的“默认”表示法在何处变为科学表示法。 接下来的三个代码清单显示了用于构造floatdoubleBigDecimal的常规范围的代码。 这些示例的完整源代码清单可在GitHub上找到 。

构造浮点示例范围

/*** Writes floats in the provided format and in the* provided range to standard output.** @param start Float to start writing.* @param threshold Float past which to not write anymore.* @param delta Delta for each increment of floats to be written.* @param label Label for header.* @param format Format for print out.*/
private static void writeFloatsToOutput(final float start,final float threshold,final float delta,final String label,final Format format)
{out.println(generateHeader(label));float floatValue = start;do{out.println("= " + format.fromFloat(floatValue));floatValue += delta;}while (floatValue < threshold);
}

构造双打的示例范围

/*** Writes doubles in the provided format and in the* provided range to standard output.** @param start Double to start writing.* @param threshold Double past which to not write anymore.* @param delta Delta for each increment of doubles to be written.* @param label Label for header.* @param format Format for print out.*/
private static void writeDoublesToOutput(final double start,final double threshold,final double delta,final String label,final Format format)
{out.println(generateHeader(label));double doubleValue = start;do{out.println("= " + format.fromDouble(doubleValue));doubleValue += delta;}while (doubleValue < threshold);
}

构造BigDecimals的示例范围

/*** Writes BigDecimals in the provided format and in the* provided range to standard output.** @param start BigDecimal to start writing.* @param threshold BigDecimal past which to not write anymore.* @param delta Delta for each increment of BigDecimals to be written.* @param label Label for header.* @param format Format for print out.*/
private static void writeBigDecimalsToOutput(final BigDecimal start,final BigDecimal threshold,final BigDecimal delta,final String label,final Format format)
{out.println(generateHeader(label));BigDecimal decimal = start;do{out.println("= " + format.fromBigDecimal(decimal));decimal = decimal.add(delta);}while (decimal.compareTo(threshold) < 0);
}

可以使用指定的范围调用上面显示的三种方法,以说明何时自动将科学计数法用于Java十进制类型的String表示形式。 接下来的三个输出列表中显示了每种数值类型以“默认”格式运行上述命令的输出。

非常小的float和非常大的float的默认表示形式确实包括对显示的最小数字和显示的最大数字的科学计数法。 这些数字说明了Float.toString(Float)文档中讨论的内容:数字“小于10 -3或大于或等于10 7 ”“以所谓的'计算机科学计数法表示。”

==========================
= Small Floats (DEFAULT) =
==========================
= 8.5E-4
= 9.5E-4
= 0.00105
= 0.0011499999
= 0.0012499999
= 0.0013499998
= 0.0014499997
= 0.0015499997
= 0.0016499996
= 0.0017499996
= 0.0018499995
= 0.0019499995
==========================
= Large Floats (DEFAULT) =
==========================
= 9999995.0
= 9999996.0
= 9999997.0
= 9999998.0
= 9999999.0
= 1.0E7
= 1.0000001E7
= 1.0000002E7
= 1.0000003E7
= 1.0000004E7

非常小的double和非常大的double的默认表示形式确实包括对所显示的最小数字和所显示的最大数字的科学计数法。 这些数字说明了Javadoc文档中Double.toString(double)所讨论的内容 :数字“小于10 -3或大于或等于10 7 ”以“所谓的“计算机科学计数法”表示。

===========================
= Small Doubles (DEFAULT) =
===========================
= 8.5E-4
= 9.5E-4
= 0.00105
= 0.00115
= 0.00125
= 0.00135
= 0.0014500000000000001
= 0.0015500000000000002
= 0.0016500000000000002
= 0.0017500000000000003
= 0.0018500000000000003
= 0.0019500000000000003
===========================
= Large Doubles (DEFAULT) =
===========================
= 9999995.0
= 9999996.0
= 9999997.0
= 9999998.0
= 9999999.0
= 1.0E7
= 1.0000001E7
= 1.0000002E7
= 1.0000003E7
= 1.0000004E7

虽然floatdouble的最小和最大数字用科学计数法表示,但BigDecimal仅默认情况下对较小的数字执行此操作。 Bigdocimal.toString()Javadoc文档中对此进行了描述:“如果小数位数大于或等于零,并且调整后的指数大于或等于-6,则数字将转换为字符形式,而无需使用指数表示法。 …如果…调整后的指数小于-6,则数字将使用指数表示法转换为字符形式。”

===============================
= Small BigDecimals (DEFAULT) =
===============================
= 8.5E-7
= 9.5E-7
= 0.00000105
= 0.00000115
= 0.00000125
= 0.00000135
= 0.00000145
= 0.00000155
= 0.00000165
= 0.00000175
= 0.00000185
= 0.00000195
===============================
= Large BigDecimals (DEFAULT) =
===============================
= 99999950000000000000000000000000000000000000000000
= 99999960000000000000000000000000000000000000000000
= 99999970000000000000000000000000000000000000000000
= 99999980000000000000000000000000000000000000000000
= 99999990000000000000000000000000000000000000000000
= 100000000000000000000000000000000000000000000000000
= 100000010000000000000000000000000000000000000000000
= 100000020000000000000000000000000000000000000000000
= 100000030000000000000000000000000000000000000000000
= 100000040000000000000000000000000000000000000000000
private static void writeFormattedValues(final Format format)
{writeFloatsToOutput(0.00085f, 0.002f, 0.0001f, "Small Floats (" + format + ")", format);writeFloatsToOutput(9_999_995f, 10_000_005f, 1f, "Large Floats (" + format + ")", format);writeDoublesToOutput(0.00085d, 0.002d, 0.0001d, "Small Doubles (" + format + ")", format);writeDoublesToOutput(9_999_995d, 10_000_005d, 1d, "Large Doubles (" + format + ")", format);writeBigDecimalsToOutput(new BigDecimal("0.00000085"),new BigDecimal("0.000002"),new BigDecimal("0.0000001"),"Small BigDecimals (" + format + ")",format);writeBigDecimalsToOutput(new BigDecimal("99999950000000000000000000000000000000000000000000"),new BigDecimal("100000050000000000000000000000000000000000000000000"),new BigDecimal("10000000000000000000000000000000000000000000"),"Large BigDecimals (" + format + ")",format);
}

上面代码中非常小和非常大的数字的表示形式可以采用默认格式,也可以采用不使用科学计数法的格式表示。 接下来显示Format枚举的代码清单,该枚举演示了可以与floatdoubleBigDecimal使用的方法,而无需科学的表示法。

Format.java

/*** Supports rendering of Java numeric types float, double,* and BigDecimal in "default" format and in format that* avoids use of scientific notation.*/
public enum Format
{DEFAULT{@Overridepublic String fromFloat(final float floatValue){return String.valueOf(floatValue);}@Overridepublic String fromDouble(final double doubleValue){return String.valueOf(doubleValue);}@Overridepublic String fromBigDecimal(final BigDecimal bigDecimalValue){return bigDecimalValue.toString();}},NO_EXPONENT{@Overridepublic String fromFloat(final float floatValue){return numberFormat.format(floatValue);}@Overridepublic String fromDouble(final double doubleValue){return numberFormat.format(doubleValue);}@Overridepublic String fromBigDecimal(final BigDecimal bigDecimalValue){return bigDecimalValue.toPlainString();}};private static final NumberFormat numberFormat = NumberFormat.getInstance();static{numberFormat.setMaximumFractionDigits(Integer.MAX_VALUE);numberFormat.setGroupingUsed(false);}public abstract String fromFloat(final float floatValue);public abstract String fromDouble(final double doubleValue);public abstract String fromBigDecimal(final BigDecimal bigDecimalValue);
}

Format枚举使用NumberFormat的一个实例,该实例禁用了分组并且将最大分数位数设置为Integer.MAX_VALUE,以确保在不使用科学计数法的情况下呈现floatdouble 。 使用BigDecimal的toPlainString()方法更容易完成此任务。

接下来显示使用Format.NO_EXPONENT运行代码的输出(并且看不到指数或科学符号)。

==============================
= Small Floats (NO_EXPONENT) =
==============================
= 0.0008500000112690032
= 0.0009500000160187483
= 0.0010499999625608325
= 0.0011499999091029167
= 0.001249999855645001
= 0.0013499998021870852
= 0.0014499997487291694
= 0.0015499996952712536
= 0.0016499996418133378
= 0.001749999588355422
= 0.0018499995348975062
= 0.0019499994814395905
==============================
= Large Floats (NO_EXPONENT) =
==============================
= 9999995
= 9999996
= 9999997
= 9999998
= 9999999
= 10000000
= 10000001
= 10000002
= 10000003
= 10000004
===============================
= Small Doubles (NO_EXPONENT) =
===============================
= 0.00085
= 0.00095
= 0.00105
= 0.00115
= 0.00125
= 0.00135
= 0.0014500000000000001
= 0.0015500000000000002
= 0.0016500000000000002
= 0.0017500000000000003
= 0.0018500000000000003
= 0.0019500000000000003
===============================
= Large Doubles (NO_EXPONENT) =
===============================
= 9999995
= 9999996
= 9999997
= 9999998
= 9999999
= 10000000
= 10000001
= 10000002
= 10000003
= 10000004
===================================
= Small BigDecimals (NO_EXPONENT) =
===================================
= 0.00000085
= 0.00000095
= 0.00000105
= 0.00000115
= 0.00000125
= 0.00000135
= 0.00000145
= 0.00000155
= 0.00000165
= 0.00000175
= 0.00000185
= 0.00000195
===================================
= Large BigDecimals (NO_EXPONENT) =
===================================
= 99999950000000000000000000000000000000000000000000
= 99999960000000000000000000000000000000000000000000
= 99999970000000000000000000000000000000000000000000
= 99999980000000000000000000000000000000000000000000
= 99999990000000000000000000000000000000000000000000
= 100000000000000000000000000000000000000000000000000
= 100000010000000000000000000000000000000000000000000
= 100000020000000000000000000000000000000000000000000
= 100000030000000000000000000000000000000000000000000
= 100000040000000000000000000000000000000000000000000

标准Java浮点类型和BigDecimal类以科学计数法表示一些数字,但是很容易确保在不需要时不使用这种默认的科学计数法表示。

翻译自: https://www.javacodegeeks.com/2017/11/simple-string-representation-java-decimal-numbers-without-scientific-notation.html

java字符串各个字符计数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python操纵excel的方法_python操作Excel的几种方式

Python对Excel的读写主要有xlrd、xlwt、xlutils、openpyxl、xlsxwriter几种。首先你的本地要有包文件&#xff0c;安装上面的包文件如下图1.xlrd主要是用来读取excel文件import xlrdworkbook xlrd.open_workbook(u有趣装逼每日数据及趋势.xls)sheet_names workbook.sheet_name…

计算机线性输入录音原理,耳机输出的模拟信号-怎样把声音通过线路录入电脑?比方说,收音机的耳机输出孔,接线(串 爱问知识人...

啊&#xff1f;有这样的东西吗&#xff1f;想把收音机里的声音录下来很简单。你在电脑上收听就可以了。这和软件无关。是因为硬件。买了转接头也是没用的。因为计算机声卡只能通过计算机来放音然后录制。其实你指的就是放音录制而不是通过其他线路来录制。这和外放的设备无关。…

Linux 如何查看命令所在位置/查看命令文件所在位置

文章目录whichtypewhereiswhich which 命令的作用是在环境变量 PATH 所指定的路径中&#xff0c;搜索某个系统命令的位置&#xff0c;并且返回第一个搜索结果。 查看命令详情&#xff0c;猛戳 《Linux 命令之 which – 查找并显示给定命令的绝对路径》 [roothtlwk0001host ~…

java 方法 示例_Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射...

java 方法 示例大家好&#xff0c;这是我在该博客上发表的有关Java 9功能的第一篇文章&#xff0c;今天您将了解我最喜欢的功能“收集的工厂方法” &#xff0c;它是JEP 269的一部分。JEP代表JDK增强建议。 如果您曾经在Groovy或Kotlin工作过&#xff0c;那么您就会知道使用集合…

python中的深拷贝_Python中的深拷贝和浅拷贝

前言&#xff1a;在认识深浅拷贝的时候&#xff0c;先了解python中的可变类型与不可变类型。 以及 python中的传参到底是传递值还是传递引用(内存地址)python中的可变数据类型主要有 :(列表,字典) 指的是在内存地址(id)不变的情况下&#xff0c;可变数据类型的‘值’是可以发生…

JDK 命令之 jar -- 压缩/解压缩工具

文章目录一、命令介绍二、命令格式三、常用选项四、命令示例&#xff08;一&#xff09;将指定目录打成 jar 包&#xff08;二&#xff09;将指定目录打成 jar 包&#xff0c;且不生成文件 META-INF/MANIFEST.MF&#xff08;三&#xff09;打包时指定文件 MANIFEST.MF&#xff…

高一计算机算法教案,高一信息技术第六章“第一节程序设计的基本方法”教案设计...

一、教学目标1&#xff0e;理解算法的概念&#xff1b;2&#xff0e;知道两种算法的描述方法—语言描述法和流程图的区别3&#xff0e;能初步利用算法解决简单的问题。4&#xff0e;培养学生的理论联系实际能力和动手操作能力。二、教学重难点1&#xff0e;重点&#xff1a;算法…

openshift安装_云幸福–如何在几分钟内安装新的OpenShift Container Platform 3.7

openshift安装此安装需要安装Red Hat Middleware产品流&#xff08;预配置的容器选项&#xff09;以及所有其他功能&#xff0c;例如源容器&#xff0c;映像容器和.Net Core容器。自OpenShift容器平台发布以来&#xff0c;我一直希望提供一个简单的方法。 &#xff0c;完全配置…

python 实现语音转文字_python3实现语音转文字(语音识别)和文字转语音(语音合成)...

话不多说&#xff0c;直接上代码运行截图1.语音合成------->执行&#xff1a;结果&#xff1a;输入要转换的内容&#xff0c;程序直接帮你把转换好的mp3文件输出(因为下一步–语音识别–需要.pcm格式的文件&#xff0c;程序自动执行格式转换&#xff0c;同时生成17k.pcm文件…

Linux 命令之 7z(7-zip) -- 压缩/解压文件

文章目录 一、命令介绍(一)主要特征1.使用 LZMA 算法2.支持多种格式(二)退出代码的含义(三)关于通配符(四)关于覆盖文件的提示回应二、命令格式三、常用子命令四、常用选项五、命令示例(一)测试压缩档案的完整性(二)将指定的压缩档解压到指定的目录下(三)列出指定…

简单的计算机程序代码,优秀程序员通过简单代码,窥探电脑编程中强大的数组操作功能...

优秀程序员通过简单代码&#xff0c;窥探电脑编程中强大的数组操作功能。编程语言中&#xff0c;数组是一个非常重要的概念&#xff0c;也是一种很常用的类型。本文中通过javascript语言的代码实例&#xff0c;展现编程中数组的魅力。在javascript语言中&#xff0c;数组Array类…

java 示例_功能Java示例 第3部分–不要使用异常来控制流程

java 示例这是称为“ Functional Java by Example”的系列文章的第3部分。 我在本系列的每个部分中开发的示例是某种“提要处理程序”&#xff0c;用于处理文档。 在前面的部分中&#xff0c;我从一些原始代码开始&#xff0c;并应用了一些重构来描述“什么”而不是“如何”。…

Linux 命令之 gzip -- 压缩和解压文件

文章目录一、命令介绍二、常用选项三、命令示例&#xff08;一&#xff09;将指定目录下的每个文件压缩成 .gz 文件&#xff08;二&#xff09;解压指定目录下的每个压缩文件&#xff08;三&#xff09;显示指定目录下每个压缩文件的信息&#xff0c;并不解压&#xff08;四&am…

python读取tiff数据_opencv-python读取tiff影像,并展示

pencv-python可以读取各类图片&#xff0c;然后对图像进行处理&#xff0c;结合矩阵操作&#xff0c;可以非常方便的对图像进行各类操作&#xff0c;下面就展示一个简单的demo&#xff0c;用opencv-python读取图像并展示出来。Opencv的库安装可能比较麻烦一点。# 导入cv模块imp…

win7 计算机定时关机脚本,win7怎么定时关机?win7定时关机设置两种方法

当我们在操作电脑的时候&#xff0c;有时会有需要定时关机&#xff0c;或者不在电脑前操作是需要过段时间自动关机&#xff0c;但是Win7系统没有自带的定时关机软件&#xff0c;很多电脑用户又不喜欢安装第三方软件来完成该操作。那么win7怎么定时关机&#xff1f;本文为大家介…

Linux 命令之 gunzip -- 用来解压缩文件

文章目录一、命令介绍二、常用选项三、命令示例&#xff08;一&#xff09;解压文件&#xff0c;删除原文件&#xff08;二&#xff09;解压文件&#xff0c;并保留原文件&#xff08;三&#xff09;解压文件到其它目录下&#xff08;四&#xff09;指定后缀名来解压文件一、命…

java面试spring_针对Java程序员的二十大Spring REST面试问题答案

java面试spring大家好&#xff0c;过去两周来&#xff0c;我一直在与Spring教程共享一些REST&#xff0c;今天&#xff0c;我将向申请Web开发人员角色的Java开发人员共享一些常见的Spring和REST采访问题。 由于Spring Framework是用于开发Java Web应用程序和RESTful Web Servic…

socket python实例_Python网络编程—第27课—Socket实例(0531)

一、创建套接字示例(服务端)import socket #导入模块import time #导入模块s socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建TCP套接字address (127.0.0.1, 8888)s.bind(address) #为TCP套接字绑定IP及端口s.listen(10) #启动TCP监听&#xff0c;同时接受10个sock…

Linux 命令之 bzip2 -- bz2文件的压缩程序

文章目录一、命令介绍二、常用选项三、命令示例&#xff08;一&#xff09;压缩指定文件&#xff08;二&#xff09;压缩指定目录下的文件&#xff08;三&#xff09;解压指定的文件一、命令介绍 Linux 系统中命令 bzip2 的英文是“bunzip2”&#xff0c;即.bz2 文件格式的压缩…

错误计算机怎么打开,电脑开机出错怎么回事

开机后出现这个错误&#xff0c;有没有大神教一下怎么办[Window Title]Error[Main Instruction]A JavaScript error occurred in the main process[Content]Uncaught Exception:Error: Unable to find a valid appat Object. (C:\Program Files (x86)\Thunder Network\Thunder\…