【问题标题】:need to convert Int value into double having one digit after point需要将 Int 值转换为点后有一位数的双精度值
【发布时间】:2020-10-25 05:34:27
【问题描述】:

我有两个 Int 变量和一个 double 类型的数组

int a=2; int b=3;

double[] result =  new double[2];

现在我需要将这些变量 a,b 添加到数组结果中,但它们应该以精度一添加

2.0 和 3.0

result[0]=a; 
result[1]=b;

最终结果

result[0] have value 2.0 and 
result[1] have value 3.0

【问题讨论】:

  • 你尝试了什么?
  • 我尝试了 result[0]= Math.Round(a,1) 并将 a 转换为 .ToString("0.0") 而不是加倍。也尝试在 a 中添加 0.0,然后添加到结果中,但都是徒劳的
  • 你所说的“徒劳无功”是什么意思,你有没有得到任何错误,你如何检查结果是否符合预期?
  • 2.02.000000000000000 是同一个数字,输出时如何选择将其可视化会有所不同。你能解释一下你想做什么吗?
  • @Fabio 表示没有成功,我会通过 Console.WriteLine() 来查看结果

标签: c# type-conversion


【解决方案1】:

C# 中的 double 具有大约 16 位的精度。您无法更改这一点,但是当您将 2 和 3 分配给双精度数时,您可能可以确定它们是 2.0 和 3.0

简而言之,您无需回答任何问题;你已经做了你希望做的事。你的数字已经是你想要的了

正如在 cmets 中所指出的,如果您希望它们以特定方式在屏幕上呈现,则在将它们发送到屏幕时将它们格式化为字符串,例如 yourDouble.ToString("0.0")

这与日期的概念完全相同 - 字符串“2020-01-01”和“2020 年 1 月 1 日 00:00”表示完全相同的时间点,作为人类,当您阅读它们时,您会明白现在是午夜2020 年 1 月 1 日。它们只是格式不同。

2(整数)、2.00000000(浮点数)和 2.0000000000000000(双精度)都是相同的值,只是格式不同。一个国家的居民可能会写一个千位分隔符 . 和一个小数分隔符 , 并写“2,0”.. 但它仍然是相同的值

【讨论】:

  • 明白你的意思。那么我的问题是您说“但是当您将 2 和 3 整数分配给双精度数时,您可能可以确定它们是 2.0 和 3.0”。如何将 2 和 3 转换为 2.0 和 3.0,同时将它们分配给 double?
  • 您在分配时已经完成了转换。我说“可能”是因为并非每个数字都可以精确地表示为双精度数。例如,如果您执行int a = 6; double b = a; b *= 0.1;,您可能希望您的双精度为 0.6,但实际上它是 0.60000000000000009.. 但由于您只将其打印到小数点后 1 位,这并不重要
猜你喜欢
  • 2017-02-24
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2021-09-12
  • 2019-02-24
  • 1970-01-01
相关资源
最近更新 更多