【发布时间】:2013-03-28 04:04:41
【问题描述】:
如何将数字转换为 0. 和数字?
所以
int i = 50;
float a = 0.i //wrong code :D
还是什么? 我该怎么做?
【问题讨论】:
-
对于
i的某些值,您是否期望能够获得a = 0.01或a = 0.001? -
你期待
a == 0.50吗?
如何将数字转换为 0. 和数字?
所以
int i = 50;
float a = 0.i //wrong code :D
还是什么? 我该怎么做?
【问题讨论】:
i 的某些值,您是否期望能够获得a = 0.01 或a = 0.001?
a == 0.50吗?
float a = i;
while( a >= 1.0f ) a /= 10.0f;
【讨论】:
/= 10.0f。注意小数点和f 后缀以表示float 常量。
这很难看,但我认为这可行:
int i = 50;
std::stringstream ss;
ss << "0." << i;
float a;
ss >> a;
【讨论】:
怎么样:
#include <cmath>
#include <initializer_list>
#include <iostream>
float zero_dot( float m ) {
return m / pow( 10.0, floor( log( m ) / log( 10.0 ) ) + 1 );
}
int main() {
for( auto const & it: { 5.0, 50.0, 500.0, 5509.0, 1.0 } ) {
std::cout << it << ": " << zero_dot( it ) << std::endl;
}
return 0;
}
输出是:
5: 0.5
50: 0.5
500: 0.5
5509: 0.5509
1: 0.1
计算不使用任何循环。
【讨论】: