小编msk*_*her的帖子

浮动添加提升到双倍?

今天早上我有一个小型的WTF时刻.WTF可以概括为:

float x = 0.2f;
float y = 0.1f;
float z = x + y;
assert(z == x + y); //This assert is triggered! (Atleast with visual studio 2008)
Run Code Online (Sandbox Code Playgroud)

原因似乎是表达式x + y被提升为double并与之中的截断版本进行比较z.(如果我更改zdouble断言未触发).

我可以看到,出于精确原因,在将结果转换为单精度之前,以双精度执行所有浮点算术是有意义的.我在标准中找到了以下段落(我想我已经知道了,但在这种情况下不是这样):

4.6.1. "类型的右值float可以转换为类型的右值double.值不变"

我的问题是,x + y保证会被提升为双倍,还是由编译人员自行决定?

更新:由于许多人声称不应该使用==浮点数,我只是想说在我正在使用的特定情况下,确切的比较是合理的.

浮点比较棘手的,这里有一个关于这个主题的有趣链接,我认为还没有提到.

c++ floating-point double

12
推荐指数
2
解决办法
3301
查看次数

在.NET框架中,为什么有PointF(float)而没有"PointD"(double)?

谁能解释为什么在.NET框架中有PointF结构(使用单精度float类型)而没有"PointD"(使用双精度double类型)?

他们是否确定在System.Drawing命名空间中这样的精度永远不会有意义?还有其他原因吗?

.net floating-point double graphics system.drawing

12
推荐指数
1
解决办法
1062
查看次数

如何在不包含指数表示法的情况下获得浮点值

在C#中,是否可以在float上执行ToString并在不使用指数的情况下获取值?

例如,请考虑以下事项:

float dummy;

dummy = 0.000006F;

Console.WriteLine(dummy.ToString());
Run Code Online (Sandbox Code Playgroud)

这给出了输出

6E-06
Run Code Online (Sandbox Code Playgroud)

但是,我的意思是

0.000006
Run Code Online (Sandbox Code Playgroud)

我能找到的最接近的是使用"F"限定符,但是我需要指定小数位数,否则值将被舍入.

实际上是否有一种自动执行此操作的方法,或者我需要加载一些时髦的逻辑来修剪零或计算出所需的小数位数.

谢谢;
理查德莫斯

c# floating-point tostring

12
推荐指数
1
解决办法
2万
查看次数

有没有办法证明 - 使用CSS对齐浮动HTML元素?

本质上,我试图实现"text-align:justify"的影响,但是使用浮动块元素.我有很多块我想证明 - 对齐.

IE浏览器.每条线的水平间距不同,以确保每条线的长度相同.(非粗糙的右边缘).

有没有办法用CSS做到这一点?如果没有,是否有合适的JS库来实现这一目标?或者这是不可行的?

css alignment justify css-float

12
推荐指数
1
解决办法
1万
查看次数

格式化浮点数

我有一个类型的变量double,我需要以最多3位小数的精度打印它,但它不应该有任何尾随零...

例如.我需要

2.5 // not 2.500
2   // not 2.000
1.375 // exactly till 3 decimals
2.12  // not 2.120
Run Code Online (Sandbox Code Playgroud)

我试过用DecimalFormatter,我做错了吗?

DecimalFormat myFormatter = new DecimalFormat("0.000");
myFormatter.setDecimalSeparatorAlwaysShown(false);
Run Code Online (Sandbox Code Playgroud)

谢谢.:)

java string floating-point double string-formatting

12
推荐指数
2
解决办法
2万
查看次数

如何让孩子只用CSS自动适应父母的宽度?

我有一个服务器端组件,使用DIV没有固定宽度生成流体布局"工具栏" ,A在其中生成许多.

然后我需要自定义该布局,以使所有A标签自动适合父宽度.但是孩子的数量是可变的,父母的宽度是未知的(它自动适应窗口).

我用这个小提琴做了一些测试:http://jsfiddle.net/ErickPetru/6nSEj/1/

但是我找不到让它变得动态的方法(取消注释最后一个A标签以查看它是如何工作的,哈哈).

我无法更改服务器端源以使用固定宽度格式化HTML.如果有任何办法,我真的想用CSS解决它,即使用JavaScript我也可以实现这个结果.

如何让所有孩子自己适应父母的宽度,与孩子的数量无关?

html css width css-float fluid-layout

12
推荐指数
2
解决办法
3万
查看次数

格式化双精度而不是四舍五入

我需要格式化(而不是舍入)a double到2位小数.

我尝试过:

String s1 = "10.126";
Double f1 = Double.parseDouble(s1);
DecimalFormat df = new DecimalFormat(".00");
System.out.println("f1"+df.format(f1));
Run Code Online (Sandbox Code Playgroud)

结果:

10.13
Run Code Online (Sandbox Code Playgroud)

但我要求输出 10.12

java floating-point double

12
推荐指数
3
解决办法
3万
查看次数

String.format使用逗号而不是point

到目前为止,我的应用程序正在处理许多设备而没有问 但是现在我用Android 3.2获得了新的Galaxy Tab,它一直在崩溃.我发现问题是EditText中的浮点数.我myEditText.setText(String.format("%.1f", fMyFloat));用来将浮动放在EditText中.但不知何故,我的3.2 Galaxy Tab上的浮点数是用逗号而不是点生成的.当我读回EditText时,应用程序当然崩溃了,告诉我这是因为逗号而没有有效的浮点数...

这里出了什么问题?

floating-point android android-edittext

12
推荐指数
3
解决办法
2万
查看次数

将字符串"2½"(两个半)转换为2.5

现在我正在构建一个从电子表格导入数据的小应用程序,由于原始条目的性质,读取的字符串具有8½,2½等值.

例如,我使用简单函数的目标是将2½转换为float 2.5.

我已经尝试过.to_f方法,但这给我留下了一个奇怪的值2.02½.

任何见解或建议将非常感谢!

ruby string floating-point ruby-on-rails character-encoding

12
推荐指数
2
解决办法
4444
查看次数

如何检查浮动的依赖关系

我想确定(在c ++中)一个浮点数是否是另一个浮点数的乘法逆.问题是我必须使用第三个变量来完成它.例如这段代码:

float x=5,y=0.2;
if(x==(1/y)) cout<<"They are the multiplicative inverse of eachother"<<endl;
else cout<<"They are NOT the multiplicative inverse of eachother"<<endl;
Run Code Online (Sandbox Code Playgroud)

将输出:"他们不是......"这是错的,这段代码:

float x=5,y=0.2,z;
z=1/y;
if(x==z) cout<<"They are the multiplicative inverse of eachother"<<endl;
else cout<<"They are NOT the multiplicative inverse of eachother"<<endl;
Run Code Online (Sandbox Code Playgroud)

将输出:"他们......"这是正确的.
为什么会这样?

c++ algorithm floating-point inverse floating-accuracy

12
推荐指数
3
解决办法
794
查看次数