最近在学习java的数据类型,为了更加巩固学习以及减少学习成本,我可是扎扎实实的在学喔~
同时还理解了一些php原本搁在一边,怎么也找不到解答的疑问。
在java中有一种基本数据类型叫float,单精度浮点类型。
而我发现所有的例子中,它在被赋值的过程中,总会在尾巴处被加上一个f,而且不用还会出错。
我感到很困惑,因为long和char、byte等类型都没有这样的要求。
float num; num = 3.00; //必定提示错误:可能会丢失精确度 并无法编译 num = 3.00f; //正确 输出为 3.00 num = 3333; //正确,输出的时候是3.0
我最好奇的是,既然我已经申明类型为float为什么你还要我在尾部加一个数据转换的f呢?
上网找了好多资料,终于真相大白:
原来是float类型在赋值过程中会自动被认为是double类型……
这算是bug吗?我可不能轻易的就去质疑开发者的意图……嗯嗯……=w=嘛~当不知道吧~
我的总结意见:
尽量多用double,好处:1.不需要在屁股加上d,2.因为double的存储空间是-1.7E308~1.7E308 比float的-3.4E38~3.4E38大很多,而且日常中这个需求也较大,3.因为只有在赋予整数(没小数点的数值)时,float才不报错,那要它来何用?直接double或int了。
我初步是这么认为~记下记下~
如果大家一定想用float来处理浮点数值,那么无论如何切记赋值的时候尾部一定要加f来转换类型。
发表评论