返回时double变为舍入

时间:2016-02-03 17:26:01

标签: c return double return-value

如何在不获取rounded的情况下返回双精度数据:

int function() {
    double d = 5.894; 
    printf("d=%f\n", d);
    return d;
}

int main() {
    double d = function();
    printf("d=%f\n", d);
    return 0;
}

这给了我

d=5.894000
d=5.000000

我在这里缺少什么?

2 个答案:

答案 0 :(得分:6)

您的函数返回class RegData2: UITableViewController, UISearchBarDelegate, UISearchDisplayDelegate { // Beginning to ios7 compatibility let model = Model() var prevArray = [String]() var selectionPrev = String() var selection : String = "" var filteredTableData = [String]() var int = 0 override func viewDidLoad() { super.viewDidLoad() // Reload the table self.tableView.reloadData() } override func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if (tableView == self.searchDisplayController?.searchResultsTableView) { return self.filteredTableData.count } else { return prevArray.count } } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell! cell.textLabel?.font = UIFont.boldSystemFontOfSize(18) if (tableView == self.searchDisplayController?.searchResultsTableView) { cell.textLabel?.text = filteredTableData[indexPath.row] return cell } else { cell.textLabel?.text = prevArray[indexPath.row] return cell } } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { tableView.deselectRowAtIndexPath(indexPath, animated: true) // controller.searchBar.resignFirstResponder() if (tableView == self.searchDisplayController?.searchResultsTableView) { selection = filteredTableData[indexPath.row] } else { selection = prevArray[indexPath.row] } performSegueWithIdentifier("regData2ToRegView", sender: self) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "regData2ToRegView" { let regView = segue.destinationViewController as! RegView regView.prevSelection = selection regView.prevSelectionType = selectionPrev } } func filterContentForSearchText(searchText: String, scope: String = "Title") { filteredTableData = prevArray.filter({( item : String) -> Bool in var match = (scope == "Title") var stringMatch = item.rangeOfString(searchText) return match && (stringMatch != nil) }) } func searchDisplayController(controller: UISearchDisplayController, shouldReloadTableForSearchString searchString: String?) -> Bool { self.filterContentForSearchText(searchString!, scope: "Title") return true } func searchDisplayController(controller: UISearchDisplayController, shouldReloadTableForSearchScope searchOption: Int) -> Bool { self.filterContentForSearchText(self.searchDisplayController!.searchBar.text!, scope: "Title") return true } } ,必须返回int

更改

double

int function()

答案 1 :(得分:1)

iharob的答案当然是正确的,但我认为知道将来如何避免此类错误也很重要。

我还没有找到任何关于这种行为的明确引用(从"大"数字类型隐式转换为"较小"一个),所以我问过{{关于这一点。

很快,通过提供正确的编译警告标志,可以在编译时发现这些错误(例如-Wconversion),因为它几乎总是一个bug。 / p>

但是,这种行为是设计上的,正如Chris在评论中提到的那样,有时它在性能方面是question