为什么浮动和双重显示java中的不同行为?

时间:2016-02-04 06:49:14

标签: java types

案例1

double a=033.0 //works fine

案例2

<form method="post" action="">
    <input type="string" name="word">
    <input type="submit">   
</form>
<?php 
    if( $_SERVER['REQUEST_METHOD']=='POST' ){
        if ( isset( $_POST["word"] ) ) {

            $word = $_POST["word"];
            echo $word . " -> ";

            function translate( $word=false ){
                if( $word ){
                    $dict = array('hello' => 'sawadee khap','thanks' => 'kap khum khap','sorry' => 'mai pen rai');
                    foreach ($dict as $en => $th) {
                        if( $word == $en ) {
                            return $th;
                        }
                    }
                }
                return false;
            } 

            $result=translate( $word );
            echo $result ? $result : 'Sorry, not found!';

        } else {
            echo "enter a word";
        }
    }
?>

为什么案例1显示错误而不是案例2,反之亦然?

3 个答案:

答案 0 :(得分:0)

默认情况下,java使用double类型来存储浮点值。因为你在float中存储double(向下转换),java会抛出一个错误。它可以通过两种方式解决

  1. 浮动a = 033.0f

  2. 浮动a =(浮动)033.0

答案 1 :(得分:0)

case 1 ---- float a = 033.0 //显示编译问题

案例2 ----双a = 033.0 //工作正常

在Java中,十进制数被解释为double,因此无法自动执行从double到float的转换,因此您需要这样给出: float a = 033.0f;

答案 2 :(得分:0)

它只是对Java语法的理解。 您可以阅读java的Primitive数据类型。 你可以在任何地方得到它......

链接:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

指向此链接,执行ctrl + F,&amp;粘贴这个&#34;浮点字面值&#34;。 你不会浪费时间游荡......

为了您自己的方便,您可以更喜欢这个。

float fractionNumber = 25.24F; fractionNumber = 25.24f;

double greaterFractionNum = 56.65555D;

greaterFractionNum = 56.65555;

但总的来说就像这样......以后你会习惯它。

float foo = 34.4F;

double doo = 34.4; 立即实施! ...体验它,理解它......&amp;你永远不会忘记它。 :)