【问题标题】:How do I turn 67 into float equivalent?如何将 67 转换为等效浮点数?
【发布时间】:2014-10-04 16:23:10
【问题描述】:

我正在使用一个库,我需要在其中设置一个变量的值,它只接受 float 类型,但 TrackBar 控件只接受 Int32Value 属性。

假设TrackBar 的Min 值为0,Max 值为100。而TrackBar 的Current 值为67;如何将该值转换为等效的浮点数?所以它应该变成类似 0.067,如果我是正确的。

【问题讨论】:

  • .67 可能是您想要的。 .067 表示千分之 67 而不是百分之六十七。
  • @Hogan 如果你要声明浮动,你应该拥有它=0.67f。见Why is the “f” required when declaring floats?
  • @Okuma.Scott - 不知道你在说什么,我没有声明任何东西 - 我只是指出 .067.67 的意思。
  • @Hogan 好的,不清楚。

标签: c# floating-point type-conversion


【解决方案1】:

int 转换为浮点数:

(float)trackBar.Value;

Convert.ToSingle(trackBar.Value);

请注意,如果您需要更改范围,您至少需要执行除法。 IE。在你的情况下,它看起来价值是百分比,所以除以 100.0:

trackBar.Value / 100.0f;

请注意,如果您使用100,则结果将与使用整数除法一样出错(trackBar.Value / 100 将始终为0)。

一般将0-n 范围内的整数转换为(mixValue, maxValue) 范围:

 (trackBar.Value /( (float) maxValue - minValue)) + minValue;

【讨论】:

  • 这些都不起作用。此浮点变量的最小值为 0,最大值为 1。我需要获取介于 0 和 1 之间的所有数字。(即:0.01、0.02、0.03、0.04、0.05、0.06、0.07、0.08、0.09、1)但使用你的两个例子,结果总是一样的:1.
  • @JasonPezzimenti,您能否编辑您的帖子以添加此信息以及快速代码示例?突出显示每种数据类型是什么。
  • 然后除以 100! Convert.ToSingle(trackBar.Value) / 100.0;
  • @Mangist,完美。非常感谢。 :-)
  • -1:请确保在 cmets 中进行编辑以提供完整的答案。谢谢你。
【解决方案2】:

将整数值除以 100 作为float 得到百分比作为float。这将导致值被归一化为 0 和 1 之间的十进制值:

float trackBarPercentage = trackBar.Value / 100f;

integer 值除以float 值将导致右侧自动转换为float 类型。有关详细信息,请参阅 MSDN 文章 Casting and Type Conversions

【讨论】:

  • 感谢@avanek 的帮助!
猜你喜欢
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2013-08-31
相关资源
最近更新 更多