Haskell是否进行从double到整数的默认转换?

时间:2016-02-15 14:53:44

标签: haskell type-conversion

我有一个类型为div a b的函数。当我使用div a b作为函数中变量的值时,如果<html> <head> </head> <body> <form action="insertform.php" method="post"> Topic: <input type="text" name="topic"><br /> Name: <input type="text" name="name"><br /> Attendance: <input type="text" name="attendance"><br /> Image: <input type="file" name="image"><br /> <input type="submit" name="submit"> </form> <?php if (isset($_POST['submit'])){ $con = mysql_connect("localhost","username","password"); if (!$con){ die("Can not connect: " . mysql_error()); } mysql_select_db("testingisfun",$con); $sql = "INSERT INTO Lectures (Topic,Name,Attendance,Image) VALUES ('$_POST[topic]', '$_POST[name]', '$_POST[attendance]', '$_POST[image]')"; mysql_query($sql,$con); mysql_close($con); } ?> </body> </html> 的返回值为1/2或任何两倍的值,则该值将向下舍入为0.

这是对的吗?如果将double强制转换为整数,那么Haskell是否会像java一样削减值?

2 个答案:

答案 0 :(得分:8)

div 1 2不返回0.5,然后将其转换为整数0.它首先返回0。 div执行整数除法,因此总是返回一个整数(或其他Integral类型,具体取决于您使用它的类型)。没有双打。

将double转换为整数时,舍入方法取决于您使用的方法。例如,floor将向下舍入数字,而round将舍入到最接近的整数。 Haskell中没有隐式转换,因此任何转换都将通过函数进行。

答案 1 :(得分:3)

  

Haskell是否像java中一样切断了值

不,不。

在执行整数除法时,Java将向零舍入,而Haskell向向下舍入;所以在Haskell

\> (-9) `div` 10
-1

而在Java -9 / 10中为零:

public class IntDiv{
     public static void main(String []args){
         double a = (-9) / 10;
         System.out.printf("%.2f\n", a); // would print 0.00
     }
}