我有一个看起来像这样的人:
0.04251789
看起来应该是这样的:
0.04251700
无论最后两位数是什么,它们都应被00&替换; 重要的是最后两位数字不会丢失,而是由00&替换。
所以这个:
0.042517
会错的。
实现这一目标的最快方法是什么?
答案 0 :(得分:3)
我有一个看起来像这样的人:
0.04251789
看起来应该是这样的:
0.04251700
您想要向下舍入到最近的 Upload.upload({
url: "https://api.cloudinary.com/v1_1/" + credrentials["cloud_name"] + "/upload",
fields: {
cloud_name: credrentials["cloud_name"],
api_key: credrentials["api_key"],
signature: credrentials["signature"],
timestamp: credrentials["timestamp"],
//file: 'http://res.cloudinary.com/justask/image/upload/v1450094392/kfvu2lnh4pidjfb0b3vz.jpg'
},
file: file
}).progress(function (e) {
console.log("progress");
}).success(function (data, status, headers, config) {
console.log("success");
$rootScope.photos = $rootScope.photos || [];
data.context = {custom: {photo: $scope.title}};
file.result = data;
$rootScope.photos.push(data);
}).error(function (data, status, headers, config) {
file.result = data;
});
。这可以这样做:
1.0 / 1000000
所以这个:
0.042517
会错的。
将double d = 0.04251789;
double rounded = std::floor(f * 1000000) / 1000000;
转换为字符串时,只需指定正确的精度即可。你想要8个数字,所以:
double
转换为字符串不是一种选择。
这与您的要求相矛盾,即该数字必须具有尾随零。尾随(和前导)零只在数字的文本表示中有意义。
答案 1 :(得分:2)
所以这里是一个c-way,它不是最好的,但我应该做你想要的。
int main( void ) {
double number = 0.04251789;
char buffer[10];
snprintf(buffer, sizeof(buffer), "%g", number);
buffer[8] = '0';
buffer[9] = '0';
std::cout << "Converted Number: " << buffer << std::endl;
}
输出应为Converted Number: 0.04251700
我也用字符串尝试过,但他似乎削减了一些数字,我不知道如何禁用它。但是如果你想尝试一下c ++风格,可以试试std::to_string()
方法。
答案 2 :(得分:1)
因为它需要是字符串,否则你将无法显示零,c解决方案可能是:
char temp[128];
memset(temp,'\0',sizeof(temp));
sprintf(temp,"%10.8f",0.04251789);
temp[strlen(temp)-1]='0';
temp[strlen(temp)-2]='0';
printf(temp);