在Java中,我想要一个double值并将其转换为一个BigDecimal并将其string值打印到一定的精度。 import java.math.BigDecimal; public class Main { public static void main(String[] args) { double d=-.00012; System.out.println(d+""); //This prints -1.2E-4 double c=47.48000; BigDecimal b = new BigDecimal(c); System.out.println(b.toString()); //This prints 47.47999999999999687361196265555918216705322265625 } } 它打印这个巨大的东西: 47.47999999999999687361196265555918216705322265625 并不是 47.48 我进行BigDecimal转换的原因有时是double值将包含很多小数位(即-.000012 ),将double转换为String时将产生科学记数法-1.2E-4 。 我想以非科学记数法存储string值。 我想让BigDecimal总是有两个精度单位,例如:“47.48”。 BigDecimal是否可以限制转换为string的精度?
我有这样的Swift结构。 struct Usage { var totalData: Double var remainingTotalData: Double init(jsonData: NSData) { var jsonDict = [String: AnyObject]() do { jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject] } catch { print("Error occurred parsing data: \(error)") } totalData = jsonDict["totalfup"] as! Double remainingTotalData = jsonDict["totalrem"] as! Double } } 从一个API,我得到了以下的JSON响应。 这是jsonDictvariables的println。 [ "totalfup": 96.340899, […]
我最近很快学习,但我有一个基本的问题,无法find答案 我想得到类似的东西 var a:Int = 3 var b:Int = 3 println( pow(a,b) ) // 27 但pow函数只能使用double数字,它不能和integer一起工作,我甚至不能使用double(a)或a.double()等方法来将int转换为double。 为什么它不提供整数的力量? 它肯定会返回一个整数没有歧义! 为什么我不能将一个整数转换为双精度? 它只是改变3到3.0(或者30000 …不pipe) 如果我有两个整数,我想做功率操作,我该怎么做顺利? 谢谢!
好的,所以我知道有很多文章指出我不应该使用DOUBLE在MySQL数据库中存储资金,否则我会以棘手的精确错误结束。 重点是我没有devise一个新的数据库,我要求find方法来优化现有的系统。 新版本包含783个DOUBLEtypes的列,其中大部分用于存储货币或公式来计算金额。 所以我对这个主题的第一个看法是我应该强烈推荐在下一个版本中将DOUBLE转换为DECIMAL,因为MySQL文档和大家都这么说。 但是,我找不到任何合理的论据来certificate这个build议,原因有三: 我们不对数据库执行任何计算。 所有的操作都是使用BigDecimal在Java中完成的,MySQL只是作为结果的普通存储。 DOUBLE提供的15位精度是足够的,因为我们主要存储2位十进制数字,偶尔小数字8位十进制数字作为公式参数。 我们有6年的生产logging,因为MySQL方面的精度损失而没有已知的bug。 即使通过在一个18毫米行表上执行操作(如SUM和复数乘法),我也无法执行缺less精度的错误。 而我们实际上并没有在生产中做这种事情。 我可以通过做类似的事情来显示丢失的精确度 SELECT columnName * 1.000000000000000 FROM tableName; 但我无法find一种方法将其转换成小数点后第二位的错误。 我在互联网上发现的大多数真正的问题是2005年和较旧的论坛条目,并且我无法在5.0.51 MySQL服务器上重现它们中的任何一个。 所以只要我们不执行任何我们不打算做的SQL算术运算,我们应该期待什么问题,只需要在DOUBLE列中存储和读取金额?
我在Java中有一个双重的,我想检查是否是NaN 。 做这个的最好方式是什么?
为什么我需要把3.14f而不是3.14来禁用所有这些警告? 这有一个连贯的理由吗?
我有下面的问题,所以我试图将一个双重转换为它的二进制表示,但使用这个Long.toBinaryString(Double.doubleToRawLongBits(d))没有帮助,因为我有大数字,龙不能存储它们即2^900 。 感谢任何帮助:)。
例如,我有variables3.545555555,我想截断到3.54。
如何在C#中将Double设置为String ,以便只有两位小数? 如果我使用String.Format("{0:0.00}%", myDoubleValue) ,那么该数字是四舍五入的,我想要一个简单的截断没有任何舍入。 我也想要转换为String是文化敏感的。
我正在阅读约书亚·布洛赫(Joshua Bloch)撰写的Effective java,而在第8条中:当重写equals时服从一般合约 , 对于浮动字段,请使用Float.compare方法; 并为双字段使用Double.compare。 由于存在Float.NaN,-0.0f和类似的双常数,需要对float和double域进行特殊的处理; 有人可以解释我为什么我们不能使用==浮点或双比较