×

numberformat用法 c 文本格式

numberformat用法(Excel中,怎样判断单元格中的数字是文本格式还是数值格式)

admin admin 发表于2023-01-24 08:36:32 浏览59 评论0

抢沙发发表评论

本文目录

Excel中,怎样判断单元格中的数字是文本格式还是数值格式

首先感谢悟空问答邀请小小筱回答这个问题!

在Excel中,怎样判断单元格中的数字是文本格式还是数值格式?依靠小编多年的经验,这里总结了6种方法可以快速判断是文本格式还是数值格式!

方法一:看单元格数值的对齐方式。

技巧:若单元格里面的数值为右对齐,则为数值格式;若单元格里面的数值为左对齐,则为文本格式。如下图所示。

方法二:看单元格数值是否可以参与计算。

技巧:数值格式可以直接参与计算,文本格式则需经过进行数值处理后才可以参与计算。如下图所示。

方法三:看单元格左上角是否有绿色小三角的提示符。

技巧:如果单元格左上角有绿色小三角的提示符,则为文本格式;如果没有,则为数值格式。如下图所示。

方法四:看单元格数值前面是否有单引号。

技巧:选中数值单元格,如果数值前面没有单引号,则为数值格式;如果数值前面有英文的单引号,则为文本格式。

方法五:使用ISTEXT函数判断是否是文本。

技巧:在单元格中输入函数公式‘=IF(ISTEXT(B5),“是文本“,“不是文本“)’也可以只用=ISTEXT(B5)来判断,如果是文本,则返回TRUE,否则返回FALSE。如下图所示。

方法六:使用函数公式“=ISNUMBER(B5)“判断是否是数字。

技巧:如果是数字,则返回TRUE;否则返回FALSE。如下图所示。

如果您喜欢本回答,请多多关注、转发与点赞!

您的关注、转发、评论、点赞、收藏都是对小编的鼓励与支持,谢谢您!

为什么使用Java的SimpleDateFormat偶尔出现值不正确的情况

我将从以下几点进行说明:

1、SimpleDateFormat的使用

2、为什么SimpleDateFormat线程不安全呢?

3、怎样解决SimpleDateFormat的线程不安全对象

4、总结

SimpleDateFormat的使用

我们通常都会写一个日期处理工具类DateUtils,使用时直接使用这个实例来进行操作。代码如下:

那么怎么使用呢?

DateUtils.parseString(“2020-05-01 10:02:02“)

上述代码的调用,在大部分的时间里都会工作的很好,但是当你的项目并发比较高的时候,问题就出来了,比如转化的时间不正确,比如报错,线程挂死。我们看下下面案例:

执行输入如下:

报java.lang.NumberFormatException: multiple points错误,直接挂死,没起来;

还有下面问题:我们只是解析 2020-05-01 10:02:02,下面输出结果却是各种各样的结果。

为什么SimpleDateFormat线程不安全呢?

我们先按下JDK中是怎样介绍SimpleDateFormat类的。

Date formats are not synchronized.

* It is recommended to create separate format instances for each thread.

* If multiple threads access a format concurrently, it must be synchronized

Date formats 是线程不安全的。推荐为每个线程创建单独的format实例。如果多线程并发访问同一个format实例,必须加同步操作。

那下面我们分析源码来说明为什么线程不安全?

因为我们在工具类中把SimpleDateFormat定义为静态变量,那么在多线程环境下SimpleDateFormat就会被多线程共享,B线程会读取到A线程的时间,就会出现时间差异和其他问题。

那我们来看parse做了什么?

从上面代码看(3)(4)(5) 操作不是原子性,当多个线程调用parse方法适合,比如A执行了(3)(4),也就是设置了cal对象,在执行代码(5) 前线程B 执行了代码(3) 清空了cal对象,由于多个线程使用的是一个cal对象,所以线程A执行(5) 的时候返回的是被线程B清空后的对象

怎样解决SimpleDateFormat的线程不安全对象

(1) 每次使用时new一个SimpleDateFormat 的 实例,这样可以保证每个实例使用自己的Calendar实例,但是每次使用都需要new一个对象,并且使用后由于没有其他引用,又需要回收,开销会很大。

(2) 可以使用synchronized 对SimpleDtaFormat实例进行同步

(3) 使用ThreadLocal,这样每个线程只需要使用一个SimpleDateFormate实例,这相比第一种方式 节省了对象的创建销毁开销,并且不需要使多个线程同步。

(4) 使用JDK8中的 DateTimeFormatter

上面说明此类是线程安全的。

总结

SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static ,

必须加锁,或者使用 DateUtils 工具类。

正例:注意线程安全,使用 DateUtils。亦推荐如下处理:

说明:如果是 JDK8 的应用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar,

DateTimeFormatter 代替 SimpleDateFormat,官方给出的解释:simple beautiful strong immutable thread-safe。