double threshold = 1000.0;
double Mass = 0.000814;
double PartMass = 0.814;
double IncorrectPPM = Mass/PartMass * 1000000;
double CorrectedPPM = (double)((decimal)IncorrectPPM);
Console.WriteLine("Mass = {0:R}", Mass);
Console.WriteLine("PartMass = {0:R}", PartMass);
Console.WriteLine("IncorrectPPM = {0:R}", IncorrectPPM);
Console.WriteLine("CorrectedPPM = {0:R}", CorrectedPPM);
Console.WriteLine("Is IncorrectPPM over threshold? " + (IncorrectPPM > threshold) );
Console.WriteLine("Is CorrectedPPM over threshold? " + (CorrectedPPM > threshold) );
Mass = 0.000814
PartMass = 0.814
IncorrectPPM = 1000.0000000000002
CorrectedPPM = 1000
Is IncorrectPPM over threshold? True
Is CorrectedPPM over threshold? False
有人知道计算机是如何知道在这种情况下,它应该在转换为十进制时将1000.00000000002
值更改为1000
的吗?
首先是演员阵容:
(decimal)IncorrectPPM
等效于构造函数调用,请参见此处的So:
new decimal(IncorrectPPM)
那意味着
1000.0000000000002
^ ^
15th 17th significant digit
将四舍五入为:
1000.00000000000
^
15th significant digit
我可以依靠这个技巧来避免重复计算的精度问题吗?
1000.000000000006
^
15th significant digit
1000.00000000001
^
15th significant digit
double threshold = 1000.0001;
将incorrectppm
的强制转换从:
double CorrectedPPM = (double)((decimal)IncorrectPPM);
致:
/* 1000.000000000006 will be rounded to 1000.0000 */
double CorrectedPPM = Math.Round(IncorrectPPM, 4);
使用math.round()
函数,但要小心math.round()
表示小数非有效数字
我想把双精度数字转换为十进制。 例如,我有23.43,双倍值是(使用matlab):174 71 255 122 20 110 55 64现在有了这个,我怎么写一个java程序给我23.43? 下面是matlab中双精度的计算: 1的51到0的分数f
基于此阵列: 我想在Java中打印双精度值和ascii值。我在互联网上找不到合适的解决方案。我刚刚发现如何将单个字符转换为整数值。但是很多字符呢?主要问题是,我有一个大char[]和一些双精度和int值存储在.对于双精度值,它们存储在4字节大小和整数1或2字节内,所以我必须阅读所有这些并转换为双精度或整数。 谢谢你帮忙
问题内容: 我正在尝试将以下十六进制字符串转换为“ 41630D54FFF68872”到9988776.0(float-64)。 使用单精度float-32,我可以这样做: 但这会引发:java.lang.NumberFormatException:使用上面的64位十六进制时,Infinite或NaN。 如何将十六进制转换为使用64位IEEE-754编码的双精度浮点数? 谢谢 问题答案: 您需要双
问题内容: 如何确定整数位数和Java中类似数字的小数点后位数。 问题答案: 双精度并不总是精确的表示形式。您只能说如果将其转换为字符串,将有多少个小数位。 这仅适用于未转换为指数符号的数字。您可能会认为1.0小数点后一位或无位。
我试图得到一个double(由两个int的分数得到)作为我下面函数的返回值。 但结果总是错的,我得到的价值如: 预期结果应介于和 我的代码有什么问题! 谢谢
问题内容: 我正在尝试将双精度分隔为整数和小数部分 因此,例如,数字24.4应该分为24和4。 使用此方法可为我提供以下值: 我需要十进制的值为4。 如何解决这个问题? 问题答案: 你可以做一个String 。然后Integer 取回两个整数分量。