相关疑难解决方法(0)

舍入到任意数量的有效数字

你怎么能将任何数字(不只是整数> 0)舍入到N位有效数字?

例如,如果我想要舍入到三位有效数字,我正在寻找一个可以采用的公式:

1,239,451并返回1,240,000

12.1257并​​返回12.1

.0681并返回.0681

5并返回5

当然,算法不应该被硬编码为仅处理3的N,尽管这将是一个开始.

algorithm rounding significant-digits

79
推荐指数
6
解决办法
4万
查看次数

将双倍数换算为x有效数字

如果我有一个双(234.004223)等,我想将其舍入为C#中的x位有效数字.

到目前为止,我只能找到舍入到x小数位的方法,但如果数字中有任何0,则只会删除精度.

例如,0.086到一位小数位变为0.1,但我希望它保持在0.08.

c# math rounding significant-digits

66
推荐指数
7
解决办法
6万
查看次数

下一个更高/更低的IEEE双精度数

我正在进行高精度的科学计算.在寻找各种效果的最佳表示时,我不断提出想要获得下一个更高(或更低)双精度数的理由.基本上,我想要做的是在double的内部表示中添加一个最低有效位.

难点在于IEEE格式不完全一致.如果要使用低级代码并实际将一个代码添加到最低有效位,则生成的格式可能不是下一个可用的双精度型.例如,它可能是一个特殊的案例编号,例如PositiveInfinity或NaN.还有一些次正常值,我不认为这些值,但它们似乎具有与"正常"模式不同的特定位模式.

可以使用"epsilon"值,但我从未理解其定义.由于double值不是均匀间隔,因此不能将单个值添加到double以产生下一个更高的值.

我真的不明白为什么IEEE没有指定一个函数来获得下一个更高或更低的值.我不可能是唯一需要它的人.

有没有办法获得下一个值(没有某种类型的循环尝试添加更小和更小的值).

double ieee-754 floating-point-precision

21
推荐指数
4
解决办法
2991
查看次数

十进制模块中的重要数字

所以我决定尝试通过编写一些python脚本来解决我的物理作业来为我解决问题.我遇到的一个问题是,重要的数字似乎并不总能正常出现.例如,它可以正确处理重要数字:

from decimal import Decimal
>>> Decimal('1.0') + Decimal('2.0')
Decimal("3.0")
Run Code Online (Sandbox Code Playgroud)

但这不是:

>>> Decimal('1.00') / Decimal('3.00')
Decimal("0.3333333333333333333333333333")
Run Code Online (Sandbox Code Playgroud)

所以有两个问题:

  1. 我是对的,这不是预期的有效数字量,还是我需要刷数字数字?
  2. 有没有办法做到这一点,而无需手动设置小数精度?当然,我确信我可以使用numpy来做到这一点,但我只是想知道是否有一种方法可以用好奇心来处理十进制模块.

python floating-point physics decimal significance

5
推荐指数
1
解决办法
6912
查看次数

字符串格式%,带有重要数字

我使用以下代码来显示使用String.Format的百分比,但我也想将有效数字的数量限制为2,这两个似乎并不能很好地结合在一起.我怎样才能使两者正常合作?

String.Format("% Length <= 0.5: {0:0%}", m_SelectedReport.m_QLT_1);
Run Code Online (Sandbox Code Playgroud)

所以我理想的是这样的东西

double d1 = 1234;
double d2 = 0.1234;

//Output of d1 -> 12
//Output of d2 -> 0.12
Run Code Online (Sandbox Code Playgroud)

c# string-formatting significant-digits

5
推荐指数
2
解决办法
7911
查看次数

打印重要数字

我正在尝试创建图形轴标签 - 物理文本.我知道如何获取标签并使用GDI打印它们,但我的算法不能很好地使用小数步骤进行打印.

要打印标签,我目前获得第一个标签,然后为每个标签添加一个步骤:

public static void PrintLabels(double start, double end, double step);
{
    double current = start;

    while (current <= end)
    {
        gfx.DrawString(current.ToString(),...); 
        current += step;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有number.ToString("something")将打印出小数,如果他们在那里,否则只是整体的一部分?我首先检查开始,结束或步骤是否包含小数部分,然后如果是,则打印所有带小数的标签.

.net c# number-formatting

4
推荐指数
1
解决办法
3088
查看次数

如何将.Net中的System.Decimal舍入到一些重要数字中

我有一个System.Decimal号码

0.00123456789

我希望得出3位重要数字.我预计

0.00123

行为是舍入行为而不是截断.在.Net中是否有防弹方法可以做到这一点?

c# math decimal rounding

4
推荐指数
2
解决办法
1817
查看次数

如何格式化具有固定有效位数的双精度数,而不考虑小数位?

也许我的措辞不太清楚,所以我尝试举例说明:

  • 如果我有一个像 123.4567 这样的双精度值,我想将其格式化为 123
  • 如果我有一个像 12.34567 这样的双精度值,我想将其格式化为 12.3
  • 如果我有一个像 1.234567 这样的双精度值,我想将其格式化为 1.23

当然,我可以使用 switch/case 语句来做到这一点,但我想知道是否有任何内置或实用程序格式,什么可以开箱即用地做到这一点。

提前致谢

.net c#

0
推荐指数
1
解决办法
1069
查看次数