数值转换原来


繁体字转换 2019-10-13 10:46:39 繁体字转换
[摘要]数值转换原来篇一:excel数值中文字符间转换原来可以用这个函数今天在一个群里有人问起这样一个函数,叫NUMBERstring,这个函数我一看也蒙了,没看见过,之后我就去学习了下,原来此函数就是一个将数值转换成中文字符的作用,然而这个函数跟excel的版本有很大的关系,一般的版本没有,经过研究exc

【www.shanpow.com--繁体字转换】

数值转换原来篇一:excel数值中文字符间转换原来可以用这个函数

今天在一个群里有人问起这样一个函数,叫NUMBERstring,这个函数我一看也蒙了,没看见过,之后我就去学习了下,原来此函数就是一个将数值转换成中文字符的作用,然而这个函数跟excel的版本有很大的关系,一般的版本没有,经过研究excel2013以上版才有此函数!
如果我们想要用,那么可在excel2013直接用手写方式,将函数写出,然后根据具体参数要求进行设置即可!
简单的说明下用法吧!
①函数名称:NUMBERstring。
请注意 大小写没有关系,只是好区分。
②函数作用: 这个函数的作用就是将数值转换为中文字符串。
③函数参数:有2个参数。
第一参数是某个单元格,第二参数为1-3之间的数字(1代表普通的大写,如“九十九”,2代表财务专用的大写,如“玖拾玖”,3代表一一对应的大写,如“九九”)
④案例图:

数值转换原来篇二:C语言中数值类型转换

1.前言
    一直以来对C语言的类型转换规则不理解,也没有找到相关的资料。偶然的机会查到关于安全编程的相关文献-----MISRA。里面对相关内容作了详细的介绍。我这里根据其内容整理了一下,以备查阅。
2.显式和隐式数据转换
      C 语言给程序员提供了相当大的自由度并允许不同数值类型可以自动转换。由于某些功能
性的原因可以引入显式的强制转换,例如:
1.        用以改变类型使得后续的数值操作可以进行
2.        用以截取数值
3.        出于清晰的角度,用以执行显式的类型转换
为了代码清晰的目的而插入的强制转换通常是有用的,但如果过多使用就会导致程序的
可读性下降。正如下面所描述的,一些隐式转换是可以安全地忽略的,而另一些则不能。 3.隐式转换的类型
     存在三种隐式转换的类别需要加以区分。
1.        整数提升(Integralpromotion)转换:
整数提升描述了一个过程,借此过程数值操作总是在 int 或long (signed  或unsigned )整型操作数上进行。其他整型操作数(char 、short 、bit-field和enum)在数值操作前总是先转化为int 或unsigned int 类型。这些类型称为 small integer 类型。
整数提升的规则命令,在大多数数值操作中,如果int 类型能够代表原来类型的所有值,
那么small integer 类型的操作数要被转化为 int 类型;否则就被转化为 unsigned int 。
注意,整数提升:
1)        仅仅应用在smallinteger 类型上
2)        应用在一元、二元和三元操作数上
3)        不能用在逻辑操作符(&&、|| 、!)的操作数上
4)        用在switch 语句的控制表达式上
整数提升经常和操作数的“平衡”(balancing ,后面提到)发生混淆。事实上,整数提升发生在一元操作的过程中,如果二元操作的两个操作数是同样类型的,那么也可以发生在二元操作之上。由于整数提升,两个类型为unsigned short 的对象相加的结果总是 signed int 或unsigned int类型的;事实上,加法是在后面两种类型上执行的。因此对于这样的操作,就有可能获得一个其值超出了原始操作数类型大小的结果。例如,如果int 类型的大小是32位,那么就能够把两个short(16位)类型的对象相乘并获得一个
32位的结果,而没有溢出的危险。另一方面,如果int类型仅是16位,那么两个16位对象的乘积将只能产生一个 16位的结果,同时必须对操作数的大小给出适当的限制。
2.        赋值转换:
赋值转换发生在:
1)        赋值表达式的类型被转化成赋值对象的类型时
2)        初始化表达式的类型被转化成初始化对象的类型时
3)        函数调用参数的类型被转化成函数原型中声明的形式参数的类型时
4)        返回语句中用到的表达式的类型被转化成函数原型中声明的函数类型时
5)        switch-case 标签中的常量表达式的类型被转化成控制表达式的提升类型时。这个转换仅用于比较的目的。
每种情况中,必要时数值表达式的值是无条件转换到其他类型的。
3.        平衡转换(Balancingconversions):
平衡转换的描述是在ISO C[2] 标准中的“UsualArithmetic Conversions”条目下。这套规则提供一个机制,当二元操作符的两个操作数要平衡为一个通用类型时或三元操作符(? : )的第二、第三个操作数要平衡为一个通用类型时,产生一个通用类型。平衡转换总是涉及到两个不同类型的操作数;其中一个、有时是两个需要进行隐式转换。整数提升(上面描述的)的过程使得平衡转换规则变得复杂起来,在整数提升时,small integer 类型的操作数首先要提升到int 或unsigned int 类型。整数提升是常见的数值转换,即使两个操作数的类型一致。
与平衡转换明显相关的操作符是:
1)        乘除 *、/ 、%
2)        加减 +、-
3)        位操作 &、^、|
4)        条件操作符  (… ? … : …)
5)        关系操作符 >、>=、< 、<=
6)        等值操作符 == 、!=
其中大部分操作符产生的结果类型是由平衡过程产生的,除了关系和等值操作符,它们
产生具有int 类型的布尔值。 要注意的是,位移操作符(<<和>>)的操作数不进行平衡,运算结果被提升为第一个操作数的类型;第二个操作数可以是任何有符号或无符号的整型。 4.危险的类型转换
类型转换过程中存在大量潜在的危险需要加以避免:
1)        数值的丢失:转化后的类型其数值量级不能被体现
2)        符号的丢失:从有符号类型转换为无符号类型会导致符号的丢失
3)        精度的丢失:从浮点类型转换为整型会导致精度的丢失
对于所有数据和所有可能的兼容性实现来说,唯一可以确保为安全的类型转换是:
1)        整数值进行带符号的转换到更宽类型
2)        浮点类型转换到更宽的浮点类型
当然,在实践中,如果假定了典型类型的大小,也能够把其他类型转换归类为安全的。
普遍来说,采取的原则是,利用显式的转换来辨识潜藏的危险类型转换。
类型转换中还有其他的一些危险需要认清。这些问题产生于C 语言的难度和误解,而不
是由于数据值不能保留。
1.        整数提升中的类型放宽:整数表达式运算的类型依赖于经过整数提升后的操作数的类型。总是能够把两个8 位数据相乘并在有量级需要时访问 16 位的结果。有时而不总是能够把两个16 位数相乘并得到一个 32 位结果。这是 C 语言中比较危险的不一致性,为了避免混淆,安全的做法是不要依赖由整数提升所提供的类型放宽。
考虑如下例子:
INT16U  u16a = 40000;    /* unsigned short / unsigned int */
    INT16U  u16b = 30000;    /* unsignedshort / unsigned int */
    INT32U  u32x;           /* unsigned int / unsigned long  */
   u32x = u16a + u16b;       /*u32x = 70000 or 4464 ?      */
    期望的结果是70000,但是赋给 u 的值在实际中依赖于 int 实现的大小。如果 int 实现的大小是32 位,那么加法就会在有符号的 32 位数值上运算并且保存下正确的值。如果 int 实现的大小仅是16 位,那么加法会在无符号的 16 位数值上进行,于是会发生折叠(wraparound )现象并产生值4464(70000%65536 )。无符号数值的折叠(wraparound)是经过良好定义的甚至是有意的;但也会存在潜藏的混淆。
2.        类型计算的混淆:程序员中常见的概念混乱也会产生类似的问题,人们经常会以为参与运算的类型在某种方式上受到被赋值或转换的结果类型的影响。例如,在下面的代码中,两个16 位对象进行 16 位的加法运算(除非被提升为 32 位int),其结果在赋值时被转换为INT32U 类型。
u32x = u16a + u16b;
并非少见的是,程序员会认为此表达式执行的是32 位加法——因为 u32x 的类型。
对这种特性的混淆不只局限于整数运算或隐式转换,下面的例子描述了在某些语句中,
结果是良好定义的但运算并不会按照程序员设想的那样进行。
u32a = (INT32U_t) (u16a * u16b);
  f64a = u16a / u16b ;
  f32a = (float32_t) (u16a / u16b) ;
  f64a = f32a + f32b ;
  f64a = (float64_t) (f32a + f32b) ;
3.        数学运算中符号的改变:整数提升经常会导致两个无符号的操作数产生一个(signed )int类型的结果。比如,如果 int 是32位的,那么两个 16 位无符号数的加法将产生一个有符号的32 位结果;而如果 int 是16 位的,那么同样运算会产生一个无符号的 16 位结果。
4.        位运算中符号的改变:当位运算符应用在无符号短整型时,整数提升会有某些特别不利
的反响。比如,在一个unsigned char 类型的操作数上做位补运算通常会产生其值为负的(signed )int 类型结果。在运算之前,操作数被提升为 int 类型,并且多出来的那些高位被补运算置1。那些多余位的个数,若有的话,依赖于int 的大小,而且在补运算后接右移运算是危险的。
为了避免上述问题产生的危险,重要的是要建立一些准则以限制构建表达式的方式。这里首先给出某些概念的定义。 5.基本类型
表达式的类型是指其运算结果的类型。当两个 long 类型的值相加时,表达式具有 long 类
型。大多数数值运算符产生其类型依赖于操作数类型的结果。另一方面,某些操作符会给出
具有int 类型的布尔结果而不管其操作数类型如何。所以,举例来说,当两个long 类型的项用系运算符做比较时,该表达式的类型为int。 术语“基本类型”的定义是,在不考虑整数提升的作用下描述由计算表达式而得到的类型。当两个int 类型的操作数相加时,结果是 int 类型,那么表达式可以说具有 int 类型。 当两个unsigned char 类型的数相加时,结果也是 int 类型(通常如此,因为整数提升的原因),但是该表达式基本的类型按照定义则是unsignedchar 。 术语“基本类型”不是C 语言标准或其他C
语言的文本所认知的,但在描述如下规则时它很有用。它描述了一个假想的对C 语言的违背,其中不存在整数提升而且常用的数值转换一致性地应用于所有的整数类型。引进这样的概念是因为整数提升很敏感且有时是危险的。整数提升是C 语言中不可避免的特性,但是这些规则的意图是要使整数提升的作用能够通过不利用发生在smallinteger 操作数上的宽度扩展来中和。
当然,C 标准没有显式地定义在缺乏整数提升时 small integer 类型如何平衡为通用类型
尽管标准确实建立了值保留(value-perserving)原则。
当int 类型的数相加时,程序员必须要确保运算结果不会超出 int 类型所能体现的值。如
果他没有这样做,就可能会发生溢出而结果值是未定义的。这里描述的方法意欲使得在做small integer 类型的加法时使用同样的原则;程序员要确保两个unsigned char 类型的数相加的结果是能够被unsigned char 体现的,即使整数提升会引起更大类型的计算。换句话说,对表达式基本类型的遵守要多于其真实类型。
 
整数常量表达式的基本类型
C 语言的一个不利方面是,它不能定义一个 char 或short 类型的整型常量。比如,值“5 ”
可以通过附加的一个合适的后缀来表示为int、unsigned int 、long或unsigned long 类型的常量;但没有合适的后缀用来创建不同的char 或short 类型的常量形式。这为维护表达式中的类型一致性提出了困难。如果需要为一个unsigned char 类型的对象赋值,那么或者要承受对一个整数类型的隐式转换,或者要实行强制转换。很多人会辩称在这种情况下使用强制转换只能导致可读性下降。在初始化、函数参数或数值表达式中需要常量时也会遇到同样的问题。然而只要遵守强类型(strong typing)原则,这个问题就会比较乐观。
解决该问题的一个方法是,想象整型常量、枚举常量、字符常量或者整型常量表达式具
有适合其量级的类型。这个目标可以通过以下方法达到,即延伸基本类型的概念到整型常量
上,并想象在可能的情况下数值常量已经通过提升想象中的具有较小基本类型的常量而获得。
这样,整型常量表达式的基本类型就可以如下定义:
1. 如果表达式的真实类型是(signed )int,其基本类型就是能够体现其值的最小的有符
号整型。
2. 如果表达式的真实类型是unsigned int ,其基本类型就是能够体现其值的最小的无符
号整型。
3. 在所有其他情况下,表达式的基本类型与其真实类型相同。
在常规的体系结构中,整型常量表达式的基本类型可以根据其量级和符号确定如下:
无符号值
0U
to
255U
8 bit unsigned
256U
to
65535U
16 bit unsigned
65536U
to
4294967295U
32 bit unsigned
 
有符号值
-2147483648
to
-32769
32 bit signed
-32768
to
-129
16 bit signed
-128
to
127
8 bit signed
128
to
32767
16 bit signed
32768
to
2147483647
32 bit signed
 
注意,基本类型是人造的概念,它不会以任何方式影响实际运算的类型。这个概念的提
出只是为了定义一个在其中可以构建数值表达式的安全框架。 6.复杂表达式
后面章节中描述的类型转换规则在某些地方是针对“复杂表达式”的概念。术语“复杂
表达式”意味着任何不是如下类型的表达式:
1)        非常量表达式
2)        lvalue (即一个对象)
3)        函数的返回值
应用在复杂表达式的转换也要加以限制以避免上面总结出的危险。特别地,表达式中的
数值运算序列需要以相同类型进行。
以下是复杂表达式:
s8a + s8b
~u16a
u16a >> 2
foo (2) + u8a
*ppc + 1
++u8a
以下不是复杂表达式,尽管某些包含了复杂的子表达式:
pc[u8a]
foo (u8a + u8b)
++ppuc
** (ppc + 1)
pcbuf[s16a * 2]
7.建议遵守的规范
1)  有符号和无符号之间没有隐式转换
2)  整型和浮点类型之间没有隐式转换
3)  没有从宽类型向窄类型的隐式转换
4)  函数参数没有隐式转换
5)  函数的返回表达式没有隐式转换
6)  复杂表达式没有隐式转换
限制复杂表达式的隐式转换的目的,是为了要求在一个表达式里的数值运算序列中,所有的运算应该准确地以相同的数值类型进行。注意这并不是说表达式中的所有操作数必须具备相同的类型。
8.总结
    上述内容详细讲解了C语言中类型转换的相关知识及建议遵守的规范。

数值转换原来篇三:数据类型转换之字符型-数值型


  Hey~ 
我们又见面啦~
你还好吗?2017.04.10Stata中有两种数据类型:字符型和数值型。在我们处理数据的时候,经常会遇到原始数据的数据类型不是我们所需要的数据类型,这就需要我们将原始数据中的一些数据类型进行转换,从而将其转成我们期望的数据类型。Stata也提供了一些相关命令。其中,字符型变量转换为数值型变量的命令有:real()函数,encode和destring命令;数值型变量转换为字符型变量的命令有:strofreal()函数,decode和tostring命令,它们相互对应,那到底有哪些区别与联系呢?
今天我们先来讲一讲如何把字符型变量转化为数值型变量。一、 命令介绍encode命令:只可以将以字符型格式储存的非数值变量转换为数值型变量,它的返回值只是1,2,3……的序号变量,相同属性的观测值赋值相同,相当于给字符变量重新编码,并且将原来的字符型数据设置为转换后的数值型变量的标签。常用选项介绍如下:destring命令:将以字符型格式储存的数值变量转化为数值型变量。常用选项介绍如下:real(s)函数: 同destring命令一样,可以将以字符型格式储存的数值s转化为数值型变量。若s是以字符型格式储存的非数值变量返回缺失值;另外,real()函数还可以对某一个具体观测值实现转变。二、例子说明为了方便介绍选项,我们输入如下数据,代码如下:
clear
input ///
str3 num str2 name str10 per str6 income
-1  a  "10%"   "9747"
1  b  "62%"   "1,234"
1  a  "53%"   "938.9"
-1  c  "48,6%"   "8344"
2  d  "58%"   "2398"
-2  e  "46%"   "-"
-3  c  "78%"   "53822"
3  d  "92,2%"   "na"
-1  e  "65%"  "$28477"
1  b  "3,6%"   "n/a"
end
字符型格式储存的数值变量num的转换
代码如下:
encode num, gen(num1)
destring num, gen(num2)
gen num3=real(num)
br num num1 num2 num3 in 1/5可以看到,对于字符型格式储存的数值变量的3种转换形式,输出结果基本没有区别,但是,num1与num2、num3的显示颜色不一样,需要注意的是,encode命令只是对字符变量重新编码,输出结果不应该和其他两种转换方式所得结果是一样的,这是怎么回事呢?我们删除变量的标签值,来看看输出结果会发生什么变化:
label drop _all
br num num1 num2 num3可以看到,num1只是对变量num进行数值排序。说明encode命令并非真正意义上的将字符型变量转换为数值型变量,它只是返回了变量的标签。字符型格式储存的非数值变量name的转换
具体代码如下:
encode name, gen(name1) label(xing)
destring name, gen(name2)
gen name3=real(name)
list name name1 name2 name3stata提示name2没有被找到。那是因为name中有非数字特征,destring命令无法转换,说明该命令只能对字符型格式储存的数值变量起作用,如果必须转换就加force选项,但返回值和real()返回的一样,是缺失的。
.destring name, gen(name2) force
br name name1 name2 name3 in 1/4字符型格式储存的混合变量income的转变
为了转换的方便,需要先用tab命令进行查看各个变量不同的非数字特征,代码如下:
tab income if regexm(income, "[^0-9\.]")然后用destring命令进行转换,代码如下:
destring income, ignore("$" "-" "," "na" "n/a") gen(income1)
br income income1前面我们用正则表达式查看了非法数字的类型,当然在这里也我们可以不用ignore选项而选择用正则表达式将上述非法数字进行替换,然后进行转变,具体命令如下:
gen income2=ustrregexra(income,"[^\d\.]","")
destring income2, gen(income3)
br income income2 income3
可以看到相同结果:最后,以变量per的转换为例,我们介绍一下命令destring的选项percent和dpcomma的用法,代码如下:
destring per, gen(per1) percent dpcomma
br per per1今天我们分享的是如何把字符型变量转化为数值型变量。想知道如何把数值型变量转化为字符型变量吗?关注我们,且听明天分解。
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:徐苾雯
技术总编:刘贝贝

本文来源:https://www.shanpow.com/bg/489358/

《数值转换原来.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • pdf怎样转换成word文档 pdf怎样转换成word文档
  • pdf文件怎么转成word pdf文件怎么转成word
  • pdf怎样转word pdf怎样转word
  • pdf转换txt pdf转换txt
  • word如何转成pdf word如何转成pdf
  • pdf转word文字 pdf转word文字
  • word文件转pdf word文件转pdf
  • pdf怎样转成word pdf怎样转成word
为您推荐
  • word转换成pdf格式 word怎么转换成pdf
    word转换成pdf格式 word怎么转换成pdf
    想知道word转换成pdf格式是怎么操作的吗?那就快来吧!以下是本站分享的word转换成pdf格式 word怎么转换成pdf,希望能帮助到大家!
  • 8划的五行属水的繁体字
    8划的五行属水的繁体字
    8画属水的字有哪些好的字义呢?现在很多人在起名的同时用五行的方法为姓名用字,五行属水的人在用8画属水的字是要挑哪些好听的字呢?以下是小编精心整理的8划的属水的繁体字,希望能够帮到你!8划的五行属水的繁
  • 如何自学素描
    如何自学素描
    第一篇如何自学素描:如何自学素描?1第一种,上握式姿势:用食指、中指、无名指、小拇指固定位置,再用大拇指按住。一般拿在笔的三分之二处。使用技巧:使用手腕发力,手指尽量不要总是变动,转笔什么的,这样画出来的线条不均匀,转换方向的时候也不要用笔来转换,而是转动手腕达到方向的变动。特点技巧:这种方法
  • 状态转换图
    状态转换图
    状态转换图篇1:状态转换图下面是我闲得无聊把龙书中词法分析那一章的状态机自己用 LaTeX + TikZ 画了一遍。源代码在 https: www overleaf com read nqgpxpydxzxw
  • 互感器安装接线实物图
    互感器安装接线实物图
    互感器安装接线实物图一:电流互感器接线图(三相四线的实物接线图)主页繁体  列表电流互感器接线图(三相四线的实物接线图) 2014-07-14常用的几种电流互感器接线图三相四线电表接线图 接线方法翻过接线端子盖,就可以看到三相四线电表接线图。其中1、4、7接电流互感器二次侧S1端,即电流进线端;
  • mka
    mka
    mka篇1:什么是MKA文件?怎样把MKA音频转换为MP3格式?MKA一个由Matroska开发的音频封装格式,能够包含任何可支持的音频编码,无视频。你能够使用很多强大的主流媒体播放器比如VLC或者KMPlayer来播放它。不过并不与大多数设备兼容。所以最简单的方法就是将MKA文件转换为MP3格式
  • 旋转式压缩机
    旋转式压缩机
    第一篇旋转式压缩机:压缩机决定整机成败:空调”心脏“类型详解压缩机是空调制冷循环系统的动力核心,它可将吸入的低温、低压制冷剂蒸汽通过压缩机压缩提高温度和压力,并通过热功转换达到制冷的目的。如果“心脏”不好,自然会影响空调的性能发挥,而“心脏”种类的繁多也让很多朋友晕头转向,那么,目前市场上有哪些类型
  • 工商管理专业研究生花费情况
    工商管理专业研究生花费情况
    工商管理专业研究生花费情况(共4篇)工商管理硕士学费一般是多少 看完你还想学吗?工商管理硕士学费一般是多少 看完你还想学吗?MBA是一个具有工作经验以后的学位,它被看成已有3年职业经验之后的一个事业加速器或转换手段。,那么,工商管理硕士
  • 非主流qq分组繁体字
    非主流qq分组繁体字
      QQ分组就是腾讯QQ好友分类列表,比如你把你的QQ好友分类为同学、同学、同学、家人、朋友、同事等分类,那么每一个分类就是一个分组。看
  • excel,汉字转拼音
    excel,汉字转拼音
    excel,汉字转拼音(共4篇)HR人士要掌握的EXCEL汉字转拼音方法及步骤HR人士要掌握的EXCEL汉字转拼音方法及步骤HR人士在工作中管理员工的数据,如果是在欧美外企,因为国外总部通常会需要将汉字员工的信息转换成拼音,将这些信