Tag:

如何在Android中打印一个有两位小数的double?

也许这是一个愚蠢的问题,但我不能猜测如果不创build一个方法如何解决它。 也许有一个“自然的方法”来做到这一点,例如在C中。 这是问题: 我有一个变种: double a; 我只想用2或3位小数显示它。 当我试图展示它: Text.setText("Value of a: " + String.valueOf(a)); 它给出了这样的东西: a的值:5.234966145 而我只想要 值的一个:5.23 不改变一个真实的价值,所以它显示了近似的数字,但与实际的数字。

在Java中强制点(“。”)作为小数点分隔符

我目前使用下面的代码来打印一个double: return String.format("%.2f", someDouble); 这很好,除了Java使用我的语言环境的小数点分隔符(逗号),而我想使用一个点。 是否有捷径可寻?

斯卡拉双打和精度

有一个函数可以截断或舍入Double吗? 在我的代码中的一点,我想要一个数字,如: 1.23456789四舍五入到1.23

Double.TryParse或Convert.ToDouble – 哪个更快更安全?

我的应用程序使用VSTO读取Excel文件,并将读取的数据添加到StringDictionary 。 它只添加数字,只有几位数字(1000 1000,2 1000,34 – 逗号是俄罗斯标准中的分隔符)。 有什么更好的检查,如果当前string是一个合适的数字? object data, string key; // data had read try { Convert.ToDouble(regionData, CultureInfo.CurrentCulture); dic.Add(key, regionData.ToString()); } catch (InvalidCastException) { // is not a number } 要么 double d; string str = data.ToString(); if (Double.TryParse(str, out d)) // if done, then is a number { dic.Add(key, str); } 我必须使用StringDictionary而不是Dictionary<string, […]

舍入一个double来把它变成一个int(java)

现在我正在尝试这个: int a = round(n); 其中n是一个double但它不工作。 我究竟做错了什么?

在java中将double转换为整数

在Java中,我想将一个double转换为一个整数,我知道如果你这样做: double x = 1.5; int y = (int)x; 你得到y = 1。 如果你这样做: int y = (int)Math.round(x); 你可能会得到2.但是,我想知道:因为整数的双重表示有时看起来像1.9999999998什么的,是否有可能通过Math.round()创build一个double仍然会导致一个截断的数字,而不是比我们正在寻找的四舍五入的数字(即:代码中的1代替2代表)? (是的,我的意思是这样的:是否有任何价值的X,其中Y将显示一个结果是一个截断,而不是一个舍入表示的X?) 如果是这样的话:有没有更好的方法来使一个四舍五入的整数没有运行截断的风险? 想了一些东西:Math.round(x)返回一个long,而不是double。 因此:Math.round()不可能返回一个看起来像3.9999998的数字。 因此,int(Math.round())将永远不需要截断任何东西,并将始终工作。

如何快速将一个Double舍入到最近的Int?

我试图做一个增长率计算器( Double ),将结果四舍五入到最近的整数,并从那里重新计算,如此: let firstUsers = 10.0 let growth = 0.1 var users = firstUsers var week = 0 while users < 14 { println("week \(week) has \(users) users") users += users * growth week += 1 } 但迄今为止我还没有办法 编辑我有点这样做: var firstUsers = 10.0 let growth = 0.1 var users:Int = Int(firstUsers) var week = […]

如何在Java中实现无穷大?

Java有没有什么能代表每种数值数据types的无穷大? 它是如何实现的,我可以用它做math运算? 例如 int myInf = infinity; //However it is done myInf + 5; //returns infinity myInf*(-1); //returns negative infinity 我已经尝试使用非常大的数字,但我想要一个适当的, 简单的解决scheme。

0.1浮点数大于0.1的两倍。 我预料它是错误的

让: double d = 0.1; float f = 0.1; 应该expression (f > d) 返回true或false ? 经验上,答案是true 。 但是,我认为这是false 。 由于0.1不能完全以二进制表示,而double有15至16位的精度,浮点数只有7 。 所以他们都小于0.1 ,而双倍更接近0.1 。 我需要一个确切的解释。

为什么这个随机值有一个25/75分布而不是50/50?

编辑:所以基本上我想写的是1位散列double 。 我想用一个50/50的false将一个double映射为true或false 。 为此,我编写了一些随机数字的代码(只是作为一个例子,我想用规则的数据来使用它,仍然得到50/50的结果) ,检查它们的最后一位,如果是1,则增加y如果n它是0。 然而,这个代码不断地导致25% y和75% n 。 为什么不是50/50? 为什么这么奇怪,但是直截了当(1/3)的分布呢? public class DoubleToBoolean { @Test public void test() { int y = 0; int n = 0; Random r = new Random(); for (int i = 0; i < 1000000; i++) { double randomValue = r.nextDouble(); long lastBit = Double.doubleToLongBits(randomValue) & 1; if […]