我注意到这个构造函数有很大的痛苦(即使在Stack Overflow上也是如此).人们使用它,即使文档明确指出:
这个构造函数的结果可能有点不可预测 http://java.sun.com/javase/6/docs/api/java/math/BigDecimal.html#BigDecimal(double)
可能不推荐使用的现有规范:我们建议弃用BigDecimal(double)构造函数,该构造函数目前提供的结果与Double.toString()方法不同.
尽管如此,构造函数还没有被弃用.
我很想听到有关这方面的任何看法.
我正在尝试计算(360/24)/ 60当我得到0.25时,我一直得到答案0.0
用语言:我想将360除以24,然后将结果除以60
public class Divide {
public static void main(String[] args){
float div = ((360 / 24) / 60);
System.out.println(div);
}
}
Run Code Online (Sandbox Code Playgroud)
打印出:
0.0
这是为什么?我做了一些非常愚蠢的事情,还是有充分理由这样做
我想在php中将float转换为int值:
var_dump((int)(39.3 * 100.0)); //Returns 3929 but should be 3930!
var_dump((int)(39.2 * 100.0)); //Returns 3920
Run Code Online (Sandbox Code Playgroud)
我可以使用ceil来使它工作,但是有人可以向我解释一下吗?
var_dump((int)ceil(39.3 * 100.0)); //Returns 3930
Run Code Online (Sandbox Code Playgroud) 我正在使用左浮动DIV来模拟两列布局(每个div包含用于编辑不同数据的文本字段,如名称,爱好,......).所以看起来应该是这样的
1 2
3 4
5 6
Run Code Online (Sandbox Code Playgroud)
现在我的div-box并不总是相同,因为有些DIV比其他DIV有更多的元素.现在我的布局看起来像这样
1 2
2
3 4
5 6
Run Code Online (Sandbox Code Playgroud)
如果您缩放,则还可以看到此示例的效果,以便仅显示四个或三个列.例如,如果连续显示4列,则Float 1和Float 6之间有很多空间.这在我的UI上看起来不太好.我想要的是Float 6跟Float 1之间没有空格(除了我定义的边距)
编辑:我的DIV基本上只包含一个浮点数:左边和宽度:40%,这样两个适合屏幕
这是一个截图显示更多 
我有一个从x-plane通过UDP发送的字节数组.字节(4)都是浮点数或整数...我试图将它们转换为浮点数但到目前为止没有运气...
示例数组:字节数据[41] = { - 66,30,73,0};
如何将4个字节转换为int或float并且不浮动使用8个字节?
我有一个我无法弄清楚的简单问题.我有一个程序,它应该从输入读取一个浮点数.问题是它会变成字符串而我不能为我的生活弄清楚如何将它转换为浮点数(是的,我是一个完整的新词).
let searchString = args.[0]
let myFloat = hmm hmmm hmmmm
Run Code Online (Sandbox Code Playgroud) 我正在用C++制作游戏,这是一个可以在舞台上移动的坦克.坦克有一个角度(漂浮,以度为单位,我假设坦克在他的大炮指向右边时为0º),速度(浮动),并且有一个称为"deltaT"(浮动)的时间常数.
当玩家向前移动坦克时,我使用三角函数和时间函数的位置物理方程(我的意思是X(t),我不知道它是如何用英语说的),以便计算新坦克的坐标.阶段.
这是我的问题:由于从float到int的通道,不考虑最接近零的值.因此,在某些角度,坦克看起来是旋转的,但是朝不同的方向移动.
这是我的代码所做的:
1 - 首先,我通过使用坦克移动的角度来分离其组件X和Y的速度:
float speedX = this->speed * cos(this->angle);
float speedY = this->speed * sin(this->angle);
Run Code Online (Sandbox Code Playgroud)
2 - 然后使用我上面提到的等式来获得新的坐标:
this->x = (int) ceil(this->x + (speedX * deltaT));
this->y = (int) ceil(this->y - (speedY * deltaT));
Run Code Online (Sandbox Code Playgroud)
问题从第一步开始:在某些角度,cos或sin的值非常接近于零.因此,当我将它乘以速度来获得速度X时,我仍然得到一个非常低的数字,然后当我将它乘以deltaT它仍然太低时,最后当应用ceil时,这个数量完全丢失了.
例如,在94º,deltaT = 1.5,速度= 2,假设X的初始值为400,我们有:
speedX = -0.1395...
this->x = 400 //it must be 399.86..., but stays in 400 due to the ceiling
Run Code Online (Sandbox Code Playgroud)
所以,在我的游戏中,坦克看起来是旋转的,但是直接向前移动.此外,有时它向后移动但向前移动错误,反之亦然.
¿我怎样才能使油箱的方向更准确?提高deltaT的速度或值不是选项,因为它是关于坦克,而不是公式1:P
从float到Decimal的直接转换是在python-2.7中实现的,在Decimal的构造函数和Decimal.from_float()类方法中都是如此.
Python-2.6反而抛出一个TypeError建议首先转换为字符串:
TypeError: Cannot convert float to Decimal. First convert the float to a string
Run Code Online (Sandbox Code Playgroud)
所以我通常的解决方法是:
if sys.version_info < (2, 7):
Decimal.from_float = classmethod(lambda cls, x: cls(str(x)))
Run Code Online (Sandbox Code Playgroud)
这只是错误信息的文学翻译 - 我也不打算在构造函数中实现它.
如果它很简单,为什么他们不首先实现它而不是告诉用户在TypeError中执行它?这是最好的方法(扩展名是python-2.7和更新的?)
如何将"32位有符号定点数(16.16)"转换为浮点数?
是否(fixed >> 16) + (fixed & 0xffff) / 65536.0确定?-2.5怎么样?和-0.5?
还是fixed / 65536.0正确的方法?
(PS:无论如何,签名定点"-0.5"在内存中是怎样的?)
当我在PHP中进行以下乘法时:
$ret = 1.0 * 0.000000001;
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:1.0E-9
我想将此结果转换为正常的十进制表示法,我该怎么做?
sprintf('%f',$ret)不起作用,它返回0.000000.溢出?