选择数据类型以及如何理解它们

我正在研究一些小型项目,并没有完全理解数据类型及其用途。 这是我摔跤的一些事情。

我将使用什么数据类型来表示:

  • 一个人的薪水?
  • 一个人的出生日期?
  • 一个人的名字?
  • 一个人的社会安全号码?
  • 一个人要在其税款上申请的家属人数?
  • 地球的重量?
  • 数据类型是否有坚实的资源?


  • 金钱(工资): Decimal
  • 生日: DateTime
  • 名称: String
  • 社会安全号码: String
  • 地球的重量: floatdouble
  • 说明

    十进制值类型适用于需要大量重要整数和小数位并且没有舍入误差的财务计算。 十进制类型并不排除舍入的需要。 相反,它最大限度地减少了四舍五入造成的错误。 - MSDN

    它也不能是一个整数,因为你需要一个小数点(59.9美元),整数不能有一个整数,你必须转换它,例如用一个总会围绕它的转换: ((int)7.001) == 8true

    你也不会使用字符串。 文本只是错误的表示(量化金钱不会产生一个字符列表,对吧?)。 而且你也想运行一些数学运算,我敢肯定,你不能直接用字符串来做,因为它不是数字。 例如2 + 2 = 4 。 尝试与字符串相同: "2" + "2" = "22"+重载:它为字符串添加数字和连接)。

    编辑:我对此的看法已经改变!

    计算机和浮点非常复杂,甚至容易出错(如果你不知道你在做什么)。 我建议不要将它们用于金钱或任何精确和关键的事情。

    我建议使用不会溢出的整数类型(对于任意大小使用BigInteger ),并使用它来表示您需要的最低分辨率。 例如,您可能会将美元表示为美分,因此150表示1.5 。 舍去错误和令人恐惧的IEEE标准! 哇噢! 加上整型计算机速度更快,所以你通常可以获得更好的性能,特别是如果你可以设法使用int ,即你确定它不会溢出。

    电话号码和安全号码

    电话号码和安全号码被称为号码,但实际上他们只是一串数字,不是吗? 至少这似乎是常见的看法。 那么已经告诉你:使用一个字符串。
    您也不太可能使用电话号码进行数学运算? (尽管我认为总结电话号码可能会让我们在一个狂野的下午)。

    生日

    DateTime是日期的标准.NET类型,我相信没有必要解释为什么,名称是不言自明的。

    名称

    字符串的原因很明显。

    重量

    doublefloat用于这种事情。 这取决于你想要多少精度。 Double给你更多,但是权衡是需要更多的记忆。 它只有当你有很多的时候才会有真正的区别。 我的经验法则是双打,除非我真的需要使用单个/浮动。 这就是说,根据我的经验,几乎所有类似这样的游戏(重力值,重量等)通常都是float而且很少是double 。 有时,在您工作时,域名会给您不同的经验法则。

    浮点和双精度之间的区别:链接和另一个链接。


    薪金 - 使用浮动或双重; 两者都代表十进制,后者是双精度,你可能不需要,因为金钱通常只有2-3个小数位
    DoB - 依赖于语言,大多数高级语言都有Date或DateTime对象类型,否则可能使用字符串或char数组,甚至创建自己的Date类
    名称 - 显然是字符串或字符数组
    ssn - 由于被看作是一串字符(也可能包含非数字字符' - '),并且不一定是数值,所以可以将其存储为字符串或字符数组。 电话也一样#
    家属的# -因为只能为整数,从来没有一个小数点,使用整数
    重量 - 再次可以用十进制数表示,所以浮点数或双精度


    考虑为每个问题表示的值。

    薪水意味着以美元和美分为代表的金钱(至少在美国),所以你需要某种十进制/浮动类型

    出生日期代表一个简单的日期

    名称代表一个字符串

    社会安全号码代表一个字符串

    因为它是一个整数,所以赋税的依赖者数量是整数类型

    地球的重量也是某种十进制/浮点数

    这是功课吗? 你也没有提及什么类型的编程语言,但是这两种类型都是类型的,一般由字符串,日期,数字,小数等组成。

    链接地址: http://www.djcxy.com/p/78633.html

    上一篇: choosing data types and how to understand them

    下一篇: Scanning and printing variable data type "double" in C