有没有办法获得像这样的string的浮点值: 75,25 € ,而不是parsefloat(str_replace(',', '.', $var)) ? 我希望这是依赖于当前的网站语言,有时逗号可以用点代替。
在处理现实世界的货币价值的时候,我build议使用BigDecimal而不是Double。但是我没有一个令人信服的解释,只是“通常这样做”。 你可以谈谈这个问题吗?
我在Java中有一个非常简单的部门(这是一个产品数量/每小时生产),但是无论何时我做这个部门,我都会遇到奇怪的错误: float res = quantity / standard; 我已经尝试了以上的几个值的分工,我总是得到错误,但是我尝试了其他地方,并得到正确的是这样的: 世界上任何地方: 13.6 = 6800 / 500; Java的: 13.0 = 6800 / 500; 我已经研究了BigDecimal和BigInteger,但是我还没有find一种方法来与他们创build这个部门,还有没有其他的方式来做这个部门在Java中没有精度错误? 任何帮助将不胜感激。
如何在.NET Framework中将double转换为浮点string表示forms而不使用科学记数法? “小”样本(有效数字可以是任意大小,例如1.5E200或1e-200 ): 3248971234698200000000000000000000000000000000 0.00000000000000000000000000000000000023897356978234562 没有一个标准的数字格式是这样的, 自定义格式似乎也不允许在小数点分隔符后有一个开放的数字位数。 这不是一个重复的如何将二重string转换为string(E-05),因为这里给出的答案并不能解决问题。 在这个问题上接受的解决scheme是使用一个固定的点(如20位数),这不是我想要的。 格式化和修剪冗余0的固定点无法解决问题,因为固定宽度的最大宽度是99个字符。 注意:解决scheme必须正确处理自定义数字格式(例如其他小数点分隔符,取决于文化信息)。 编辑:这个问题实际上只是关于取代上述数字。 我知道浮点数是如何工作的,可以用什么数字来计算。
我有以下简单的代码: int speed1 = (int)(6.2f * 10); float tmp = 6.2f * 10; int speed2 = (int)tmp; speed1和speed2应该有相同的值,但实际上我有: speed1 = 61 speed2 = 62 我知道我可能应该使用Math.Round而不是投射,但我想了解为什么值是不同的。 我查看了生成的字节码,但除了存储和加载外,操作码是相同的。 我也尝试了相同的代码在Java中,我正确地获得62和62。 有人可以解释这个吗? 编辑:在实际的代码中,它不是直接6.2f * 10,而是一个函数调用*常量。 我有以下字节码: 对于速度1: IL_01b3: ldloc.s V_8 IL_01b5: callvirt instance float32 myPackage.MyClass::getSpeed() IL_01ba: ldc.r4 10. IL_01bf: mul IL_01c0: conv.i4 IL_01c1: stloc.s V_9 速度2: IL_01c3: ldloc.s V_8 […]
我已经查过这是什么,但是有没有人真的有一个例子,当你在Java中使用strictfp关键字? 有没有人真的find了这个用途? 是否将所有的浮点操作都放在了一个副作用上?
我想知道是否有办法克服精度问题,这似乎是我的机器内部表示浮点数的结果: 为了清楚起见,这个问题总结为: // str is "4.600"; atof( str ) is 4.5999999999999996 double mw = atof( str ) // The variables used in the columns calculation below are: // // mw = 4.5999999999999996 // p = 0.2 // g = 0.2 // h = 1 (integer) int columns = (int) ( ( mw – ( h […]
有人可以解释为什么乘以100这里给出一个不太准确的结果,但乘以10两次给出更准确的结果? ± % sc Loading development environment (Rails 3.0.1) >> 129.95 * 100 12994.999999999998 >> 129.95*10 1299.5 >> 129.95*10*10 12995.0
我试图计算p1 =(1/1) (1/2) … *(1 / n),但是有些地方是错误的,printf给了我0.000 … 0 #include <stdio.h> int main(void) { int i,num; float p3; do { printf ("give number N>3 : \n" ); scanf( "%d", &num ); } while( num <= 3 ); i = 1; p3 = 1; do { p3=p3*(1/i); printf( "%f\n",p3 ); } while ( i <= num […]
我需要格式化一个浮点数“n”小数位。 试图BigDecimal,但返回值是不正确的… … – public static float Redondear(float pNumero, int pCantidadDecimales) { // the function is call with the values Redondear(625.3f, 2) BigDecimal value = new BigDecimal(pNumero); value = value.setScale(pCantidadDecimales, RoundingMode.HALF_EVEN); // here the value is correct (625.30) return value.floatValue(); // but here the values is 625.3 } 我需要返回一个浮点值,我指定的小数位数。 我需要Float值返回不是Double 。