当前位置: 首页 > 面试题库 >

类型转换Math.random?

厍彭薄
2023-03-14
问题内容

在这个站点上浏览了一下问题,却找不到我正在寻找的关于将Math.random()方法从double转换为int
的答案。我的问题是,为什么Math.random只返回0而不带括号,而返回包含在括号内的随机数呢?代码的第一部分返回0:

int number; 
number = (int) Math.random() * 10; 
System.out.println("\nThe random number is " + number);

该代码有效:

int number; 
number = (int) (Math.random() * 10); 
System.out.println("\nThe random number is " + number);

应当指出,我在类型转换上看到了几段不同的代码,其中一些程序员似乎使用了两种转换方式。


问题答案:

这段代码:

number = (int) Math.random() * 10;

首先计算一下:

(int) Math.random()

由于Math.random()返回的数字从0到1(但不包括1),如果将其强制转换为int,则它将舍入为0。然后将10乘以0,则得到0。



 类似资料:
  • Rust 在基本类型之间没有提供隐式类型转换(强制类型转换)(implicit type conversion,coercion )。不过使用 as 关键字进行显式类型转换(explict type conversion,casting)。 一般来说,Rust 的整型类型的转换规则遵循 C 语言的惯例,除了那些在 C 语言是未定义行为的情况。在 Rust 中,所有的整型类型转换的行为都得到了很好的

  • 类型转换可以判断实例的类型,也可以将该实例在其所在的类层次中视为其父类或子类的实例。 Swift 中类型转换的实现为 is 和 as 操作符。这两个操作符使用了一种简单传神的方式来检查一个值的类型或将某个值转换为另一种类型。 如同协议实现的检查(此处应有链接)中描述的那样,你还可以使用类型转换来检查类型是否遵循某个协议。 为类型转换定义类层次 你可以在类及其子类层次中使用类型转换来判断特定类实例的

  • String可以与整型和浮点型互相转换。 整形 String转Int String s("1234"); long value = s.toInt(); Int转String String s(1234); 浮点型 String转Float String s("1234.56"); double value = s.toFloat(); Float转String String s(1234.

  • Variant对象提供的toXXX系列函数可以将标量(Scalar)变量转换为其他类型。Zend字符串、数组、对象可直接使用构造方法进行转换,但必须保证传入的Variant对象必须为该类型,否则底层会抛出致命错误。 转为整型 long value = var.toInt(); 转为浮点型 double value = var.toFloat(); 转为布尔型 bool value = var.

  • 本页包含内容: 定义一个类层次作为例子 检查类型 向下转型(Downcasting) Any和AnyObject的类型转换 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。 类型转换在 Swift 中使用is 和 as操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。 你也可以用来检查一个类是否实现了某个协议,就像在 Checking for Pr

  • 大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。 比如,alert 会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字。 在某些情况下,我们需要将值显式地转换为我们期望的类型。对象还未纳入讨论中 在本章中,我们不会讨论 object 类型。目前,我们将只学习原始类型。 之后,在我们学习完 object 类型后,我们会在 对象 — 原始值转换 一章中学习对象 — 原始